首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 其他相关 >

ResultSetMetaData运用实例

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

ResultSetMetaData使用实例

本例中使用ORACLE数据库,表CLASS结构如下:

ResultSetMetaData运用实例

例子代码如下:

  1. import?java.sql.Connection;
  2. import?java.sql.DriverManager;
  3. import?java.sql.PreparedStatement;
  4. import?java.sql.ResultSet;
  5. import?java.sql.ResultSetMetaData;
  6. import?java.sql.SQLException;
  7. class?TestDemo?{
  8. ????public?static?Connection?getConnection()?{
  9. ????????Connection?conn?=?null;
  10. ????????try?{
  11. ????????????Class.forName("oracle.jdbc.driver.OracleDriver");
  12. ????????????String?url?=?"jdbc:oracle:thin:@192.168.100.251:1521:cstar";
  13. ????????????String?user?=?"ticket";
  14. ????????????String?pass?=?"ticket";
  15. ????????????conn?=?DriverManager.getConnection(url,?user,?pass);
  16. ????????}?catch?(ClassNotFoundException?e)?{
  17. ????????????e.printStackTrace();
  18. ????????}?catch?(SQLException?e)?{
  19. ????????????e.printStackTrace();
  20. ????????}
  21. ????????return?conn;
  22. ????}
  23. ????public?static?void?main(String[]?args)?{
  24. ????????Connection?conn?=?getConnection();
  25. ????????String?sql?=?"select?*?from?class";
  26. ????????PreparedStatement?stmt;
  27. ????????try?{
  28. ????????????stmt?=?conn.prepareStatement(sql);
  29. ????????????ResultSet?rs?=?stmt.executeQuery(sql);
  30. ????????????ResultSetMetaData?data?=?rs.getMetaData();
  31. ????????????while?(rs.next())?{
  32. ????????????????for?(int?i?=?1;?i?<=?data.getColumnCount();?i++)?{
  33. ????????????????????//?获得所有列的数目及实际列数
  34. ????????????????????int?columnCount?=?data.getColumnCount();
  35. ????????????????????//?获得指定列的列名
  36. ????????????????????String?columnName?=?data.getColumnName(i);
  37. ????????????????????//?获得指定列的列值
  38. ????????????????????String?columnValue?=?rs.getString(i);
  39. ????????????????????//?获得指定列的数据类型
  40. ????????????????????int?columnType?=?data.getColumnType(i);
  41. ????????????????????//?获得指定列的数据类型名
  42. ????????????????????String?columnTypeName?=?data.getColumnTypeName(i);
  43. ????????????????????//?所在的Catalog名字
  44. ????????????????????String?catalogName?=?data.getCatalogName(i);
  45. ????????????????????//?对应数据类型的类
  46. ????????????????????String?columnClassName?=?data.getColumnClassName(i);
  47. ????????????????????//?在数据库中类型的最大字符个数
  48. ????????????????????int?columnDisplaySize?=?data.getColumnDisplaySize(i);
  49. ????????????????????//?默认的列的标题
  50. ????????????????????String?columnLabel?=?data.getColumnLabel(i);
  51. ????????????????????//?获得列的模式
  52. ????????????????????String?schemaName?=?data.getSchemaName(i);
  53. ????????????????????//?某列类型的精确度(类型的长度)
  54. ????????????????????int?precision?=?data.getPrecision(i);
  55. ????????????????????//?小数点后的位数
  56. ????????????????????int?scale?=?data.getScale(i);
  57. ????????????????????//?获取某列对应的表名
  58. ????????????????????String?tableName?=?data.getTableName(i);
  59. ????????????????????//?是否自动递增
  60. ????????????????????boolean?isAutoInctement?=?data.isAutoIncrement(i);
  61. ????????????????????//?在数据库中是否为货币型
  62. ????????????????????boolean?isCurrency?=?data.isCurrency(i);
  63. ????????????????????//?是否为空
  64. ????????????????????int?isNullable?=?data.isNullable(i);
  65. ????????????????????//?是否为只读
  66. ????????????????????boolean?isReadOnly?=?data.isReadOnly(i);
  67. ????????????????????//?能否出现在where中
  68. ????????????????????boolean?isSearchable?=?data.isSearchable(i);
  69. ????????????????????System.out.println(columnCount);
  70. ????????????????????System.out.println("获得列"?+?i?+?"的字段名称:"?+?columnName);
  71. ????????????????????System.out.println("获得列"?+?i?+?"的字段值:"?+?columnValue);
  72. ????????????????????System.out.println("获得列"?+?i?+?"的类型,返回SqlType中的编号:"
  73. ????????????????????????????+?columnType);
  74. ????????????????????System.out.println("获得列"?+?i?+?"的数据类型名:"?+?columnTypeName);
  75. ????????????????????System.out.println("获得列"?+?i?+?"所在的Catalog名字:"
  76. ????????????????????????????+?catalogName);
  77. ????????????????????System.out.println("获得列"?+?i?+?"对应数据类型的类:"
  78. ????????????????????????????+?columnClassName);
  79. ????????????????????System.out.println("获得列"?+?i?+?"在数据库中类型的最大字符个数:"
  80. ????????????????????????????+?columnDisplaySize);
  81. ????????????????????System.out.println("获得列"?+?i?+?"的默认的列的标题:"?+?columnLabel);
  82. ????????????????????System.out.println("获得列"?+?i?+?"的模式:"?+?schemaName);
  83. ????????????????????System.out
  84. ????????????????????????????.println("获得列"?+?i?+?"类型的精确度(类型的长度):"?+?precision);
  85. ????????????????????System.out.println("获得列"?+?i?+?"小数点后的位数:"?+?scale);
  86. ????????????????????System.out.println("获得列"?+?i?+?"对应的表名:"?+?tableName);
  87. ????????????????????System.out.println("获得列"?+?i?+?"是否自动递增:"?+?isAutoInctement);
  88. ????????????????????System.out.println("获得列"?+?i?+?"在数据库中是否为货币型:"?+?isCurrency);
  89. ????????????????????System.out.println("获得列"?+?i?+?"是否为空:"?+?isNullable);
  90. ????????????????????System.out.println("获得列"?+?i?+?"是否为只读:"?+?isReadOnly);
  91. ????????????????????System.out.println("获得列"?+?i?+?"能否出现在where中:"
  92. ????????????????????????????+?isSearchable);
  93. ????????????????}
  94. ????????????}
  95. ????????}?catch?(SQLException?e)?{
  96. ????????????System.out.println("数据库连接失败");
  97. ????????}
  98. ????}
  99. }

结果例子如下:

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

热点排行