JDBC 2.0
日期:2002 年 11 月 21 日
OracleResultSetMetaData
在学习完本段内容以后,您应该能够:
使用 OracleResultSetMetaData/ResultSetMetaData 对象获得关于 ResultSet 中列的信息。
简介
ResultSetMetaData 的实现提供关于 ResultSet 的信息并实现 java.sql.ResultSetMetaData 接口。列名、列类型等均由 ResultSetMetaData 对象提供。 oracle.jdbc.OracleResultSetMetaData 类是符合 JDBC 2.0 的 Oracle 指定的 ResultSetMetaData 接口的实现。
运行示例的前提条件
要运行下面提供的示例,需要 1. 将 Oracle JDBC2.0 类包括在 classpath 中。 2. 指定所连接数据库的 <hostname>、<port> 和 <SID>。
说明
在执行 SQL 查询时,通过调用 ResultSet 对象中的 getMetaData() 方法可以获得 ResultSetMetaData 对象。返回的 ResultSetMetaData 对象可以转换类型以获取 OracleResultSetMetaData 对象。以下代码显示如何使用 OracleResultSetMetaData 。
import java.sql.*; import oracle.jdbc.OracleResultSetMetaData; public class OracleResultSetMetaDataSample { static final String dbURI = "jdbc:oracle:thin:@<hostname>:<port>:<SID>"; public static void main(String[] args) throws Exception{ // Connection reference Connection conn = null; try { // Load database driver DriverManager.registerDriver (new oracle.jdbc.OracleDriver()); // Make connection conn = DriverManager.getConnection(dbURI,"scott","tiger"); Statement stmt = conn.createStatement(); ResultSet rs = stmt.executeQuery("SELECT * from emp"); // Get the ResultSet meta data OracleResultSetMetaData rmd = (OracleResultSetMetaData)rs.getMetaData(); if (rmd == null) { System.out.println("ResultSet meta data not available"); } else { int columnCount = rmd.getColumnCount(); // Display number of Columns in the ResultSet System.out.println("Number of Columns in the table :" + columnCount); for(int i=1; i<=columnCount; i++) { // Display number of Column name System.out.print("Column Name :"+ rmd.getColumnName(i)); // Display number of Column Type System.out.print(" Column Type :"+ rmd.getColumnTypeName(i)); // Display if Column can be NOT NULL switch (rmd.isNullable(i)) { case OracleResultSetMetaData.columnNoNulls : System.out.println(" NOT NULL"); break; case OracleResultSetMetaData.columnNullable : System.out.println(" NULLABLE"); break; case OracleResultSetMetaData.columnNullableUnknown : System.out.println(" NULLABLE Unkown"); } } } } finally { // Close connection if (conn != null) { try { conn.close(); } catch (SQLException ex) { System.out.println("Error in closing Conection"); } } } } }
在获得 OracleResultSetMetaData 对象后,可以使用其中的方法以获取关于 ResultSet 中列的详细信息。OracleResultSetMetaData 中的所有方法返回 boolean、int 或 String。 getColumnCount() 方法将 ResultSet 中列的数量以 int 返回。 getColumnName() 方法将列名以 String 返回。 getColumnTypeName() 方法将列类型以 String 返回。 isNullable() 方法 在列允许为 NULL 时返回。此方法返回一个 int,它可以是下列常数中的任一项:
columnNoNulls — 表示列值不允许为 NULL
columnNullable — 表示列值允许为 NULL
columnNullableUnknown — 表示列值是否允许为空是未知状态
OracleResultSetMetaData 接口不实现 getSchemaName() 和 getTableName() 方法,因为底层协议不允许进行此操作。
资源