數據庫中元數據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();
}
}