使用OracleResultSetMetaData获得表信息

时间:2021-08-23 14:43:36
在执行 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() 方法,因为底层协议不允许进行此操作。
                             转载至程式先锋技术维客[url]www.javabiz.cn[/url]