使用OracleResultSetMetaData获得表信息
在执行 SQL 查询时,通过调用 ResultSet 对象中的 getMetaData() 方法可以获得 ResultSetMetaData
对象。返回的 ResultSetMetaData 对象可以转换类型以获取 OracleResultSetMetaData
对象。以下代码显示如何使用 OracleResultSetMetaData。
import java.sql.*;
import oracle.jdbc.OracleResultSetMetaData;
public class OracleResultSetMetaDataSample {
static final String dbURI = "jdbc:oracle:thin:@::";
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() 方法,因为底层协议不允许进行此操作。
转载至程式先锋技术维客[url]www.javabiz.cn[/url]