1. 程式人生 > >如何遍歷資料庫中的資料(在不知道資料庫名和表名的情況下)

如何遍歷資料庫中的資料(在不知道資料庫名和表名的情況下)

    玩轉資料庫的元資訊操作,主要是兩個類:  * 1) DatabaseMetaData類: 包含驅動資訊、資料庫名、表名(檢視、儲存過程等)  *     通過con.getMetaData()可獲得一個DatabaseMetaData類物件  * 2) ResultSetMetaData類: 包含表結構相關的資訊,如:列(欄位)的個數、名字、型別和屬性等資訊  *    通過rs.getMetaData()可獲得一個ResultSetMetaData類物件

 @Test     public void demo2() throws SQLException {         Connection connection = ConnUtil4.getConn();//資料庫連線         Statement st = connection.createStatement();         DatabaseMetaData dm = connection.getMetaData();

                 ///////如何獲取資料庫名////////         ResultSet rs = dm.getCatalogs();         while (rs.next()) {             System.out.println("資料庫名為" + rs.getString("TABLE_CAT"));             String dbName = rs.getString("TABLE_CAT");

          ///////如何在已知資料庫名的情況下,獲取它當中的表名////////          //引數1和引數2都是資料庫名,之所以要兩個引數,是因為該函式要相容不同的資料庫,引數2可給正則的形式。引數3是表格名,null為不用正則匹配,若取"%a%"代表只獲取名字中包含"a"的表格(檢視等),引數4是表格的型別如Table、View等             ResultSet rs2 = dm.getTables(dbName, dbName, null,                     new String[] { "TABLE" });//型別"TABLE"可從API文件中的getTableTypes()方法中查到             while (rs2.next()) {

                String tbNm = rs2.getString("TABLE_NAME");//欄位名"TABLE_NAME"可從API文件中的getTables()方法中查到                 System.out.println(tbNm);                 System.out.println("-----------------------------");                 String sql = "select * from " + dbName + "." + tbNm;                 ResultSet rs3 = st.executeQuery(sql);                 ResultSetMetaData rsmd = rs3.getMetaData();//結果集元資料                 int count = rsmd.getColumnCount();//欄位數量/列數

            /////輸出表頭////                 for (int i = 0; i < count; i++) {                     System.out.print(rsmd.getColumnName(i + 1) + " ");//jdbc中的列序號都是從1開始                 }                 System.out.println();

           //////輸出表資料///////                 while(rs3.next()){

            //輸出一行資料                     for (int i = 0; i < count; i++) {                         System.out.print(rs3.getString(i+1) + " ");                     }                     System.out.println();                 }             }

        }     }