1. 程式人生 > >java資料庫程式設計(13) 獲取資料庫更多資訊

java資料庫程式設計(13) 獲取資料庫更多資訊

  1. 使用 DatabaseMetaData可以獲得關於資料庫的很多資訊,比如支援的列,兩張表之間的外來鍵約束,檢視主鍵約束等等。
  2. 這裡的程式碼也不用怎麼講解了,如果前面的都懂的話,這些程式碼是可以看懂的。
    import java.io.FileInputStream;
    import java.sql.*;
    import java.util.Properties;
    
    public class DatabaseMetaTest {
        private String driver;
        private String url;
        private String user;
        private String pass;
    
        public void iniParam(String fileName) throws Exception{
            Properties prop = new Properties();
            prop.load(new FileInputStream(fileName));
            driver =  prop.getProperty("driver");
            url = prop.getProperty("url");
            user = prop.getProperty("user");
            pass = prop.getProperty("pass");
        }
    
        public void info() throws Exception{
        try(
                Connection conn = DriverManager.getConnection(url ,user, pass))
        {
            DatabaseMetaData dbmd = conn.getMetaData();
            ResultSet rs = dbmd.getTableTypes();
            System.out.println("支援的表型別資訊");
            printResult(rs);
            rs = dbmd.getTables(null, null, "%", new String[]{"TABLE"});
            System.out.println("\"資料庫裡的表資訊\"");
            printResult(rs);
            rs = dbmd.getPrimaryKeys(null, null, "students");
            System.out.println("students的主鍵資訊");
            rs = dbmd.getProcedures(null, null, "%");
            System.out.println("儲存過程");
            printResult(rs);
            rs = dbmd.getCrossReference(null, null, "students", null, null, "students");
            System.out.println("外來鍵約束");
            printResult(rs);
            rs = dbmd.getColumns(null, null, "students", "%");
            System.out.println("全部資料列");
            printResult(rs);
    
            }
        }
    
        public void printResult(ResultSet rs) throws Exception{
            ResultSetMetaData rsmd = rs.getMetaData();
            for(int i=0; i<rsmd.getColumnCount(); i++){
                System.out.println(rsmd.getColumnName(i+1) + "\t");
            }
            System.out.println();
            while(rs.next()){
                for(int i=0; i<rsmd.getColumnCount(); i++){
                    System.out.println(rs.getString(i+1) + "\t");
                }
                System.out.println();
            }
            rs.close();
        }
        public static void main(String args[]) throws Exception{
            DatabaseMetaTest dt = new DatabaseMetaTest();
            dt.iniParam("mysql.ini");
            dt.info();
        }
    }
    //執行程式,看到以下輸出
    //        支援的表型別資訊
    //        TABLE_TYPE
    //
    //        LOCAL TEMPORARY
    //
    //        SYSTEM TABLE
    //
    //        SYSTEM VIEW
    //
    //        TABLE
    //
    //        VIEW
    //
    //        "資料庫裡的表資訊"
    //        TABLE_CAT
    //        TABLE_SCHEM
    //        TABLE_NAME
    //        TABLE_TYPE
    //        REMARKS
    //        TYPE_CAT
    //        TYPE_SCHEM
    //        TYPE_NAME
    //        SELF_REFERENCING_COL_NAME
    //        REF_GENERATION
    //
    //        test
    //        null
    //        depts
    //        TABLE
    //
    //        null
    //        null
    //        null
    //        null
    //        null
    //
    //        test
    //        null
    //        img_table
    //        TABLE
    //
    //        null
    //        null
    //        null
    //        null
    //        null
    //
    //        test
    //        null
    //        insert100
    //        TABLE
    //
    //        null
    //        null
    //        null
    //        null
    //        null
    //
    //        test
    //        null
    //        jdbc_test1
    //        TABLE
    //
    //        null
    //        null
    //        null
    //        null
    //        null
    //
    //        test
    //        null
    //        jdbc_test2
    //        TABLE
    //
    //        null
    //        null
    //        null
    //        null
    //        null
    //
    //        test
    //        null
    //        my_test
    //        TABLE
    //
    //        null
    //        null
    //        null
    //        null
    //        null
    //
    //        test
    //        null
    //        students
    //        TABLE
    //
    //        null
    //        null
    //        null
    //        null
    //        null
    //
    //        students的主鍵資訊
    //        儲存過程
    //        PROCEDURE_CAT
    //        PROCEDURE_SCHEM
    //        PROCEDURE_NAME
    //        reserved1
    //        reserved2
    //        reserved3
    //        REMARKS
    //        PROCEDURE_TYPE
    //        SPECIFIC_NAME
    //
    //        test
    //        null
    //        PTest
    //        null
    //        null
    //        null
    //
    //        1
    //        PTest
    //
    //        外來鍵約束
    //        PKTABLE_CAT
    //        PKTABLE_SCHEM
    //        PKTABLE_NAME
    //        PKCOLUMN_NAME
    //        FKTABLE_CAT
    //        FKTABLE_SCHEM
    //        FKTABLE_NAME
    //        FKCOLUMN_NAME
    //        KEY_SEQ
    //        UPDATE_RULE
    //        DELETE_RULE
    //        FK_NAME
    //        PK_NAME
    //        DEFERRABILITY
    //
    //        全部資料列
    //        TABLE_CAT
    //        TABLE_SCHEM
    //        TABLE_NAME
    //        COLUMN_NAME
    //        DATA_TYPE
    //        TYPE_NAME
    //        COLUMN_SIZE
    //        BUFFER_LENGTH
    //        DECIMAL_DIGITS
    //        NUM_PREC_RADIX
    //        NULLABLE
    //        REMARKS
    //        COLUMN_DEF
    //        SQL_DATA_TYPE
    //        SQL_DATETIME_SUB
    //        CHAR_OCTET_LENGTH
    //        ORDINAL_POSITION
    //        IS_NULLABLE
    //        SCOPE_CATALOG
    //        SCOPE_SCHEMA
    //        SCOPE_TABLE
    //        SOURCE_DATA_TYPE
    //        IS_AUTOINCREMENT
    //        IS_GENERATEDCOLUMN
    //
    //        test
    //        null
    //        students
    //        Sno
    //        1
    //        CHAR
    //        5
    //        65535
    //        null
    //        10
    //        0
    //
    //        null
    //        0
    //        0
    //        5
    //        1
    //        NO
    //        null
    //        null
    //        null
    //        null
    //        NO
    //        NO
    //
    //        test
    //        null
    //        students
    //        Sname
    //        1
    //        CHAR
    //        20
    //        65535
    //        null
    //        10
    //        0
    //
    //        null
    //        0
    //        0
    //        20
    //        2
    //        NO
    //        null
    //        null
    //        null
    //        null
    //        NO
    //        NO
    //
    //        test
    //        null
    //        students
    //        Ssex
    //        1
    //        CHAR
    //        2
    //        65535
    //        null
    //        10
    //        1
    //
    //        null
    //        0
    //        0
    //        2
    //        3
    //        YES
    //        null
    //        null
    //        null
    //        null
    //        NO
    //        NO
    //
    //        test
    //        null
    //        students
    //        Sage
    //        4
    //        INT
    //        10
    //        65535
    //        0
    //        10
    //        1
    //
    //        null
    //        0
    //        0
    //        null
    //        4
    //        YES
    //        null
    //        null
    //        null
    //        null
    //        NO
    //        NO
    //
    //        test
    //        null
    //        students
    //        Dno
    //        1
    //        CHAR
    //        5
    //        65535
    //        null
    //        10
    //        1
    //
    //        null
    //        0
    //        0
    //        5
    //        5
    //        YES
    //        null
    //        null
    //        null
    //        null
    //        NO
    //        NO