1、DatabasemetaData:通过DatabasemetaData元数据,我们可以了解数据库的详细信息。
例子:
@Test public void databasemetadataDemo() throws SQLException{ Connection con=ConnsUtils.getCon(); DatabasemetaData dmd=con.getmetaData(); System.out.println(dmd.getDriverName()); System.out.println(dmd.getURL()); System.out.println(dmd.getUserName()); System.out.println("========================="); //※动态获取数据库名 ResultSet rs = dmd.getCatalogs();//相当于执行:show databases;只能获取当前用户下的所有数据库 while(rs.next()){ System.out.println(rs.getString(1)); } System.out.println("========================="); con.createStatement().execute("use test"); String sql=" select *from stud"; //※知道数据库的名字,动态获取表名 ResultSet rs2=dmd.getTables("test", "test", null, new String[]{"TABLE","INTERGER"}); while(rs2.next()){ System.out.println(rs2.getString("TABLE_NAME")); } // ResultSet rs2=con.createStatement().executeQuery(sql); // while(rs2.next()){ // System.out.println(rs2.getString(2)); // } }
2、ResultSetmetaData :结果集元数据,可以跨数据库操作
例子:
//在知道数据库名与表名的情况下,可以通过跨库查询,把表头和表内容都查询出来 @Test//站在结果集的高度--表格 public void resultSetmetaDataDemo() throws Exception{ Connection con=ConnsUtils.getCon(); Statement st=con.createStatement(); //跨数据库查询 用“数据库名.表名”----select * from mydb.student String sql="select *from test.stud"; ResultSet rs=st.executeQuery(sql); ResultSetmetaData rsmd=rs.getmetaData(); int columns=rsmd.getColumnCount(); //表头 for(int i=0;intent="rs.getString(i+1);" i="0;i<columns;i++){" int="" pre="" string="">