數據庫中元數據MetaData

數據庫中元數據MetaData

直接演示如何使用

@Test //DatabaseMetaData,獲取:驅動信息、數據庫名、表名
    public void DbMetaDemo() throws Exception{
        Connection con = Conn4Utils.getConn();

        DatabaseMetaData dm = con.getMetaData();//★★入口

        System.out.println(dm.getDriverName());
        System.out.println(dm.getDriverVersion());
        System.out.println(dm.getMaxStatements());
        System.out.println(dm.getJDBCMajorVersion());

        //獲取所有數據名
        System.out.println("---------------------");
        ResultSet rs = dm.getCatalogs(); 
        while(rs.next()){
            String name = rs.getString("TABLE_CAT");
            System.out.println(name);
        }

        //獲取數據庫各個表的名字
        System.out.println("---------------------");
        //下面方法參數1和參數2:數據名,,參數3:表格名(可以採用正則方式如名稱包含字符'a'的表名:'%a%')
        rs = dm.getTables("abc", "abc", null, new String[]{"TABLE","VIEW"} );
        while(rs.next()){
            String name = rs.getString("TABLE_NAME");
            System.out.println(name);
        }


        //獲取指定數據庫(名)中的指定表格(名)中的數據,,如果數據庫名和表名採用上面的方式動態獲取,那麼就可做活
        System.out.println("-------------");
        con.createStatement().execute("use abc");
        String sql = "select * from stud";
        rs = con.createStatement().executeQuery(sql);
        while(rs.next()){
            System.out.println(rs.getString(1)+","+rs.getString(2));
        }

    }
@Test //ResultSetMetaData,獲取:表結構信息(列的編號、類型和屬性)
    public void RsMetaDemo() throws Exception{
        Connection con = Conn4Utils.getConn();
        Statement st = con.createStatement();
        //跨庫查詢,表名用: 數據名.表名
        String sql = "select * from abc.book";
        ResultSet rs = st.executeQuery(sql);

        ResultSetMetaData rsmd = rs.getMetaData();//★★入口

        int colNums = rsmd.getColumnCount(); //獲取表格的列數
        //輸出表頭(第一列的字段名)
        for(int i=0;i<colNums;i++){
            String colName = rsmd.getColumnName(i+1);//參數序號從1開始
            System.out.print(colName+"\t");
        }
        System.out.println();

        //輸出表數據(內容)
        while(rs.next()){
            for(int i=0;i<colNums;i++){
                System.out.print(rs.getString(i+1)+"\t"); //從數據庫表中讀取數據,用getString()可以兼容所有類型,只是所讀取的數據都變成了字符串,若要還原成原來的類型還要強轉回去
            }
            System.out.println();
        }

    }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章