- 使用 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
java数据库编程(13) 获取数据库更多信息
猜你喜欢
转载自blog.csdn.net/weixin_39452731/article/details/83047028
今日推荐
周排行