java資料庫程式設計(13) 獲取資料庫更多資訊
阿新 • • 發佈:2018-12-02
- 使用 DatabaseMetaData可以獲得關於資料庫的很多資訊,比如支援的列,兩張表之間的外來鍵約束,檢視主鍵約束等等。
- 這裡的程式碼也不用怎麼講解了,如果前面的都懂的話,這些程式碼是可以看懂的。
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