使用 ResultSetMetaData 方法了解 ResultSet

您无法始终知道表或结果集中列的列数和数据类型。 特别是当您从远程数据源检索数据时尤其如此。

关于本任务

编写检索未知 ResultSet 的程序时,需要使用 ResultSetMetaData 方法来确定 ResultSet 的特征,然后才能从其中检索数据。

ResultSetMetaData 方法提供以下类型的信息:
  • ResultSet 中的列数
  • ResultSet 的底层表的限定符
  • 有关列的信息,如数据类型、长度、精度、小数位和可空性
  • 列是否为只读

过程

调用 executeQuery 方法为表上的查询生成 ResultSet 后,请遵循以下基本步骤来确定 ResultSet 的内容:

  1. ResultSet 对象上调用 getMetaData 方法,创建一个 ResultSetMetaData 对象。
  2. 调用 getColumnCount 方法来确定 ResultSet 中有多少列。
  3. 对于 ResultSet 中的每一列,执行 ResultSetMetaData 方法来确定列的特征。

    ResultSetMetaData.getColumnName 调用的结果反映了存储在该数据服务器的目录中的列名信息。

示例

以下代码演示如何确定员工表中所有列的数据类型。 所选语句右边的数字对应于先前描述的步骤。
图 1。 使用 ResultSetMetaData 方法来获取有关 ResultSet 的信息
String s;
Connection con;
Statement stmt;
ResultSet rs;
ResultSetMetaData rsmtadta;
int colCount
int mtadtaint;
int i;
String colName;
String colType;
…
stmt = con.createStatement();     // Create a Statement object
rs = stmt.executeQuery("SELECT * FROM EMPLOYEE"); 
                                  // Get the ResultSet from the query
rsmtadta = rs.getMetaData();      // Create a ResultSetMetaData object  1 
colCount = rsmtadta.getColumnCount();                                   2 
                                  // Find number of columns in EMP
for (i=1; i<= colCount; i++) {                                          3 
 colName = rsmtadta.getColumnName();    // Get column name
 colType = rsmtadta.getColumnTypeName();
                                        // Get column data type
 System.out.println("Column = " + colName + 
  " is data type " + colType);
                                        // Print the column value
}