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
    

猜你喜欢

转载自blog.csdn.net/weixin_39452731/article/details/83047028