ResultSetMetaData运用实例
ResultSetMetaData使用实例本例中使用ORACLE数据库,表CLASS结构如下:例子代码如下:import?java.sql.Connec
ResultSetMetaData使用实例
本例中使用ORACLE数据库,表CLASS结构如下:

例子代码如下:
- import?java.sql.Connection;
- import?java.sql.DriverManager;
- import?java.sql.PreparedStatement;
- import?java.sql.ResultSet;
- import?java.sql.ResultSetMetaData;
- import?java.sql.SQLException;
- class?TestDemo?{
- ????public?static?Connection?getConnection()?{
- ????????Connection?conn?=?null;
- ????????try?{
- ????????????Class.forName("oracle.jdbc.driver.OracleDriver");
- ????????????String?url?=?"jdbc:oracle:thin:@192.168.100.251:1521:cstar";
- ????????????String?user?=?"ticket";
- ????????????String?pass?=?"ticket";
- ????????????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?class";
- ????????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("数据库连接失败");
- ????????}
- ????}
- }
结果例子如下:
3
获得列1的字段名称:CLASS_NO
获得列1的字段值:111
获得列1的类型,返回SqlType中的编号:12
获得列1的数据类型名:VARCHAR2
获得列1所在的Catalog名字:
获得列1对应数据类型的类:java.lang.String
获得列1在数据库中类型的最大字符个数:10
获得列1的默认的列的标题:CLASS_NO
获得列1的模式:
获得列1类型的精确度(类型的长度):10
获得列1小数点后的位数:0
获得列1对应的表名:
获得列1是否自动递增:false
获得列1在数据库中是否为货币型:false
获得列1是否为空:0
获得列1是否为只读:false
获得列1能否出现在where中:true
3
获得列2的字段名称:CLASS_NAME
获得列2的字段值:111
获得列2的类型,返回SqlType中的编号:12
获得列2的数据类型名:VARCHAR2
获得列2所在的Catalog名字:
获得列2对应数据类型的类:java.lang.String
获得列2在数据库中类型的最大字符个数:10
获得列2的默认的列的标题:CLASS_NAME
获得列2的模式:
获得列2类型的精确度(类型的长度):10
获得列2小数点后的位数:0
获得列2对应的表名:
获得列2是否自动递增:false
获得列2在数据库中是否为货币型:false
获得列2是否为空:1
获得列2是否为只读:false
获得列2能否出现在where中:true
3
获得列3的字段名称:TEACHER_NO
获得列3的字段值:11
获得列3的类型,返回SqlType中的编号:12
获得列3的数据类型名:VARCHAR2
获得列3所在的Catalog名字:
获得列3对应数据类型的类:java.lang.String
获得列3在数据库中类型的最大字符个数:10
获得列3的默认的列的标题:TEACHER_NO
获得列3的模式:
获得列3类型的精确度(类型的长度):10
获得列3小数点后的位数:0
获得列3对应的表名:
获得列3是否自动递增:false
获得列3在数据库中是否为货币型:false
获得列3是否为空:1
获得列3是否为只读:false
获得列3能否出现在where中:true
3
获得列1的字段名称:CLASS_NO
获得列1的字段值:222
获得列1的类型,返回SqlType中的编号:12
获得列1的数据类型名:VARCHAR2
获得列1所在的Catalog名字:
获得列1对应数据类型的类:java.lang.String
获得列1在数据库中类型的最大字符个数:10
获得列1的默认的列的标题:CLASS_NO
获得列1的模式:
获得列1类型的精确度(类型的长度):10
获得列1小数点后的位数:0
获得列1对应的表名:
获得列1是否自动递增:false
获得列1在数据库中是否为货币型:false
获得列1是否为空:0
获得列1是否为只读:false
获得列1能否出现在where中:true
3
获得列2的字段名称:CLASS_NAME
获得列2的字段值:222
获得列2的类型,返回SqlType中的编号:12
获得列2的数据类型名:VARCHAR2
获得列2所在的Catalog名字:
获得列2对应数据类型的类:java.lang.String
获得列2在数据库中类型的最大字符个数:10
获得列2的默认的列的标题:CLASS_NAME
获得列2的模式:
获得列2类型的精确度(类型的长度):10
获得列2小数点后的位数:0
获得列2对应的表名:
获得列2是否自动递增:false
获得列2在数据库中是否为货币型:false
获得列2是否为空:1
获得列2是否为只读:false
获得列2能否出现在where中:true
3
获得列3的字段名称:TEACHER_NO
获得列3的字段值:22
获得列3的类型,返回SqlType中的编号:12
获得列3的数据类型名:VARCHAR2
获得列3所在的Catalog名字:
获得列3对应数据类型的类:java.lang.String
获得列3在数据库中类型的最大字符个数:10
获得列3的默认的列的标题:TEACHER_NO
获得列3的模式:
获得列3类型的精确度(类型的长度):10
获得列3小数点后的位数:0
获得列3对应的表名:
获得列3是否自动递增:false
获得列3在数据库中是否为货币型:false
获得列3是否为空:1
获得列3是否为只读:false
获得列3能否出现在where中:true
3
获得列1的字段名称:CLASS_NO
获得列1的字段值:333
获得列1的类型,返回SqlType中的编号:12
获得列1的数据类型名:VARCHAR2
获得列1所在的Catalog名字:
获得列1对应数据类型的类:java.lang.String
获得列1在数据库中类型的最大字符个数:10
获得列1的默认的列的标题:CLASS_NO
获得列1的模式:
获得列1类型的精确度(类型的长度):10
获得列1小数点后的位数:0
获得列1对应的表名:
获得列1是否自动递增:false
获得列1在数据库中是否为货币型:false
获得列1是否为空:0
获得列1是否为只读:false
获得列1能否出现在where中:true
3
获得列2的字段名称:CLASS_NAME
获得列2的字段值:333
获得列2的类型,返回SqlType中的编号:12
获得列2的数据类型名:VARCHAR2
获得列2所在的Catalog名字:
获得列2对应数据类型的类:java.lang.String
获得列2在数据库中类型的最大字符个数:10
获得列2的默认的列的标题:CLASS_NAME
获得列2的模式:
获得列2类型的精确度(类型的长度):10
获得列2小数点后的位数:0
获得列2对应的表名:
获得列2是否自动递增:false
获得列2在数据库中是否为货币型:false
获得列2是否为空:1
获得列2是否为只读:false
获得列2能否出现在where中:true
3
获得列3的字段名称:TEACHER_NO
获得列3的字段值:11
获得列3的类型,返回SqlType中的编号:12
获得列3的数据类型名:VARCHAR2
获得列3所在的Catalog名字:
获得列3对应数据类型的类:java.lang.String
获得列3在数据库中类型的最大字符个数:10
获得列3的默认的列的标题:TEACHER_NO
获得列3的模式:
获得列3类型的精确度(类型的长度):10
获得列3小数点后的位数:0
获得列3对应的表名:
获得列3是否自动递增:false
获得列3在数据库中是否为货币型:false
获得列3是否为空:1
获得列3是否为只读:false
获得列3能否出现在where中:true