当你使用和学习JDK的时候,可以查看并学习它所提供给你的两个ResultSetMetaData 
和DataBaseMetaData类的源码并很好的了解它们的实现原理和思路,JDBC中提供有两种源数据,一种是数据库源数据,另一种是 ResultSet源数据。这些源数据就是描述存储用户数据的容器的数据结构。其中ResultSetMetaData类完成了查询结果信息和结果中的列的各种信息。下面我就以ResultSetMetaData为例,简单的罗列它的使用方法以及它内部的方法的使用。 
首先,建立一张表并起名为users,表结构描述如下: 
字段描述          字段名称        是否为空      是否主键 
用户编号            id         Not Null       P 
用户名称          userName     Not Null 
用户密码          password     Not Null 
你也可以通过DLL执行下面脚本:(本人使用Mysql)   
CREATE TABLE `users` ( 
  `id` varchar(32) NOT NULL, 
  `userName` varchar(20) NOT NULL, 
  `password` varchar(20) NOT NULL, 
  PRIMARY KEY  (`id`), 
  UNIQUE KEY `id` (`id`) 
) ENGINE=InnoDB DEFAULT CHARSET=gbk; 
然后向该表中插入几条数据。 
最后,新建一个测试类名为TestDemo.java,源代码如下: 
package com.wanglihu.test; 

import java.sql.Connection; 
import java.sql.DriverManager; 
import java.sql.ResultSet; 
import java.sql.PreparedStatement; 
import java.sql.ResultSetMetaData; 
import java.sql.SQLException; 

public class TestDemo { 
public static Connection getConnection(){ 
Connection conn = null; 
try { 
Class.forName("com.mysql.jdbc.Driver"); 
String url = "jdbc:mysql://localhost:3306/struts2Demo"; 
String user = "root"; 
String pass = "123456"; 
conn = DriverManager.getConnection(url,user,pass); 
} catch (ClassNotFoundException e) { 
e.printStackTrace(); 
} catch (SQLException e) { 
e.printStackTrace(); 

return conn; 

public static void main(String[] args){ 
Connection conn=getConnection(); 
String sql="select * from users"; 
PreparedStatement stmt; 
try { 
stmt = conn.prepareStatement(sql); 
ResultSet rs=stmt.executeQuery(sql); 
ResultSetMetaData data=rs.getMetaData(); 
while(rs.next()){ 
for(int i = 1 ; i<= data.getColumnCount() ; i++){ 
//获得所有列的数目及实际列数 
int columnCount=data.getColumnCount(); 
//获得指定列的列名 
String columnName = data.getColumnName(i); 
//获得指定列的列值 
String columnValue = rs.getString(i); 
//获得指定列的数据类型 
int columnType=data.getColumnType(i); 
//获得指定列的数据类型名 
String columnTypeName=data.getColumnTypeName(i); 
//所在的Catalog名字 
String catalogName=data.getCatalogName(i); 
//对应数据类型的类 
String columnClassName=data.getColumnClassName(i); 
//在数据库中类型的最大字符个数 
int columnDisplaySize=data.getColumnDisplaySize(i); 
//默认的列的标题 
String columnLabel=data.getColumnLabel(i); 
//获得列的模式 
String schemaName=data.getSchemaName(i); 
//某列类型的精确度(类型的长度) 
int precision= data.getPrecision(i); 
//小数点后的位数 
int scale=data.getScale(i); 
//获取某列对应的表名 
String tableName=data.getTableName(i); 
// 是否自动递增 
boolean isAutoInctement=data.isAutoIncrement(i); 
//在数据库中是否为货币型 
boolean isCurrency=data.isCurrency(i); 
//是否为空 
int isNullable=data.isNullable(i); 
//是否为只读 
boolean isReadOnly=data.isReadOnly(i); 
//能否出现在where中 
boolean isSearchable=data.isSearchable(i); 
System.out.println(columnCount); 
System.out.println("获得列"+i+"的字段名称:"+columnName); 
System.out.println("获得列"+i+"的字段值:"+columnValue); 
System.out.println("获得列"+i+"的类型,返回SqlType中的编号:"+columnType); 
System.out.println("获得列"+i+"的数据类型名:"+columnTypeName); 
System.out.println("获得列"+i+"所在的Catalog名字:"+catalogName); 
    System.out.println("获得列"+i+"对应数据类型的类:"+columnClassName); 
    System.out.println("获得列"+i+"在数据库中类型的最大字符个数:"+columnDisplaySize); 
    System.out.println("获得列"+i+"的默认的列的标题:"+columnLabel); 
    System.out.println("获得列"+i+"的模式:"+schemaName); 
    System.out.println("获得列"+i+"类型的精确度(类型的长度):"+precision); 
    System.out.println("获得列"+i+"小数点后的位数:"+scale); 
    System.out.println("获得列"+i+"对应的表名:" + tableName); 
    System.out.println("获得列"+i+"是否自动递增:"+isAutoInctement); 
    System.out.println("获得列"+i+"在数据库中是否为货币型:"+isCurrency); 
    System.out.println("获得列"+i+"是否为空:"+isNullable); 
    System.out.println("获得列"+i+"是否为只读:"+isReadOnly); 
    System.out.println("获得列"+i+"能否出现在where中:"+isSearchable);  


} catch (SQLException e) { 
System.out.println("数据库连接失败"); 


 

java获取数据库的列名,类型等信息的更多相关文章

  1. java获取数据库的列名、类型等信息

    当你使用和学习JDK的时候,可以查看并学习它所提供给你的两个ResultSetMetaData 和DataBaseMetaData类的源码并很好的了解它们的实现原理和思路,JDBC中提供有两种源数据, ...

  2. 【java 获取数据库信息】获取MySQL或其他数据库的详细信息

    1.首先是 通过数据库获取数据表的详细列信息 package com.sxd.mysqlInfo.test; import java.sql.Connection; import java.sql.D ...

  3. java获取数据库的所有列名和对应的数据库类型

    /**     * 连接数据库     * @param driver 数据库的驱动类     * @param url 数据库的地址     * @param userName 数据库的用户名   ...

  4. [Java] Java 获取数据库所有表基本信息和表中的所有列基本信息代码

    废话不多说.上代码 import java.io.IOException; import java.io.PrintWriter; import java.sql.Connection; import ...

  5. java获取cpu、内存、硬盘信息[转]

    http://m.oschina.net/blog/312911 1 下载安装sigar-1.6.4.zip 使用java自带的包获取系统数据,容易找不到包,尤其是内存信息不够准确,所以选择使用sig ...

  6. 【助教】Java获取数据库数据展示

    本文将给出一个最简单的Java查询数据库中一张表的数据并将查询结果展示在页面的例子. 实际上,我们要解决以下两个问题: Java与数据库交互(以JDBC为例) 数据展示在前台页面(以Servlet+J ...

  7. java和数据库中日期类型的常见用法

    (1)java中日期类型:Date.Timestamp(2)数据库中:Date.Timestamp(3)字符串和Date之间的格式化转换:    SimpleDateFormat类方法: format ...

  8. java获取数据库数据表的元数据

    Connction conn; DatabaseMetaData dmd=conn.getMetaData();//获取数据库元数据 PreparedStatment ps; ps.getParame ...

  9. Java获取数据库表 字段 存储的部分数据

    在浏览器页面,选中图片(可多选) >单击删除按钮. 重点是, 本数据库表TabHeBeiTianQi中 存在 同一id,对应的picLocalPath字段  存储了多张图片,图片地址用   逗号 ...

随机推荐

  1. 【C++11】30分钟了解C++11新特性

    作者:王选易,出处:http://www.cnblogs.com/neverdie/ 欢迎转载,也请保留这段声明.如果你喜欢这篇文章,请点[推荐].谢谢! 什么是C++11 C++11是曾经被叫做C+ ...

  2. google-perftools 分析JAVA 堆外内存

    google-perftools 分析JAVA 堆外内存 分类: j2se2011-08-25 21:48 3358人阅读 评论(4) 收藏 举报 javahbasehtml工具os 原文转自:htt ...

  3. Python Queue实现生产与消费

    Python Queue模块详解 from:https://blog.linuxeye.com/334.html Python中,队列是线程间最常用的交换数据的形式.Queue模块是提供队列操作的模块 ...

  4. OpenJudge计算概论-单词排序

    /*===================================== 单词排序 总时间限制:1000ms 内存限制: 65536kB 描述 输入一行单词序列,相邻单词之间由1个或多个空格间隔 ...

  5. httpclient详细介绍

    1.HttpClient简介 HttpClient 是 Apache Jakarta Common 下的子项目,可以用来提供高效的.最新的.功能丰富的支持 HTTP 协议的客户端编程工具包,并且它支持 ...

  6. 通过批处理文件启动oracle11g服务

    注:ORCL是数据库实例名,默认的数据库是ORCL,你可以创建其他的,即OracleService+数据库名. ========================================启动服务 ...

  7. ARM与x86之3--蝶变ARM

    http://blog.sina.com.cn/s/blog_6472c4cc0100lqr8.html 蝶变ARM 1929年开始的经济大萧条,改变了世界格局.前苏联的风景独好,使得相当多的人选择了 ...

  8. 剑指offer系列57---整数中1出现的次数

    [题目]求出1~n的整数中1出现的次数.(10进制) package com.exe11.offer; /** * [题目]求出1~n的整数中1出现的次数. * @author WGS * */ pu ...

  9. define宏定义中的#,##,@#及\符号

    define宏定义中的#,##,@#及\符号 在#define中,标准只定义了#和##两种操作.#用来把参数转换成字符串,##则用来连接两个前后两个参数,把它们变成一个字符串. 1.# (string ...

  10. oracle desc 表结构

    SQL> desc v$logfile; 名称 是否为空? 类型 ----------------------------------------- -------- ------------- ...