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() 方法,因为底层协议不允许进行此操作。

资源



寄送此页面
Printer View 打印机视图