数据库元数据分析Demo

时间:2021-12-01 22:06:14

核心类:DatabaseMetaData、ResultSetMetaData

 1 System.err.println("**********************************");
Connection conn=DataSourceUtils.getDataSource().getConnection();
DatabaseMetaData dbmd=conn.getMetaData();//获取结果集conn的信息,如字段名,字段数等
ResultSet set= dbmd.getCatalogs();//获取所有数据库名称
while(set.next())
{
String name=set.getString("TABLE_CAT");
System.err.println("=="+name);
}
System.err.println("=================================");
String dbname= dbmd.getDatabaseProductName();
System.err.println(dbname);
System.err.println("=================================");
//前两个参数如果为null,则为默认连接的数据库,如果指定数据库,则为指定数据库的表;
//第四个参数如果为null,tables,views都会查询到;可以指定查找tables或者views或者全部
ResultSet set2= dbmd.getTables("jdbcdb", "jdbcdb", null, new String[]{"VIEW"});
while (set2.next()) {
String name= set2.getString("TABLE_NAME");
System.err.println("****"+name);
}
System.err.println("=================================");
Statement stmt =conn.createStatement();
stmt.execute("use jdbcdb");//转到jdbc数据库中
String sql="select * from users ";
ResultSet rs= stmt.executeQuery(sql);
ResultSetMetaData rsdaData= rs.getMetaData();//获取结果集rs的信息
int count= rsdaData.getColumnCount();//获取总行数
System.err.println(count);
List<String> list=new ArrayList<String>();
for(int i=0;i<count;i++)
{
String name=rsdaData.getColumnName(i+1);//获取行名称(数据库中的index是从1开始的)
System.err.print(name+"\t\t");
list.add(name);
}
System.err.println("");
while(rs.next())
{
for(String s:list)
{
String value= rs.getString(s);
System.err.print(value+"\t\t");
}
System.err.println("");
}