DatabaseMetaData获取数据库信息和表信息(表的列名,类型,主键等)SQL java

来源:互联网 发布:fastboot 备份数据 编辑:程序博客网 时间:2024/05/18 02:32
import java.sql.*;public class GetDBInfo{  public GetDBInfo()  {  }  public static voidmain(String[] args)  {  try{   Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance();    Stringurl="jdbc:microsoft:sqlserver://GAOXIANG:1433;DataBaseName=master";    Stringuser="daryl715";    Stringpass="1234";    Strings;    Connectioncon=DriverManager.getConnection(url,user,pass);       DatabaseMetaData dbmd=con.getMetaData();    s =dbmd.getDriverName();   System.out.println("驱动程序的名称是: "+s);   System.out.println(" ");    s =dbmd.getDatabaseProductName();   System.out.println ("数据库名称是:"+s);   System.out.println(" ");   ResultSet rs = dbmd.getSchemas();   System.out.println("模式名有:");   while(rs.next())     System.out.print("  "+rs.getString(1));     System.out.println();         s = dbmd.getSQLKeywords();   System.out.println("SQL中的关键词为: "+s);   System.out.println(" ");    intmax=dbmd.getMaxColumnNameLength();   System.out.println ("列名的最大长度可以是:"+max);   System.out.println(" ");    max =dbmd.getMaxTableNameLength();   System.out.println ("表名的最大长度可以是:"+max);   System.out.println(" ");    max =dbmd.getMaxColumnsInSelect();   System.out.println ("一个select 子句所能返回的最多列数列名的最大长度可是是:"+max);   System.out.println(" ");    max =dbmd.getMaxTablesInSelect();   System.out.println ("一个SELECT语句最多可以访问多少个表:"+max);   System.out.println(" ");    max =dbmd.getMaxColumnsInTable();   System.out.println ("表中允许的最多列数:"+max);   System.out.println(" ");    max =dbmd.getMaxConnections();   System.out.println ("并发访问的用户个数:"+max);   System.out.println(" ");    max =dbmd.getMaxStatementLength();   System.out.println ("SQL语句最大允许的长度:"+max);   System.out.println(" ");    s =dbmd.getNumericFunctions();   System.out.println("数据库的所有数学函数的列表: "+s);   System.out.println(" ");    s =dbmd.getStringFunctions();   System.out.println("数据库的所有字符串函数的列表: "+s);   System.out.println(" ");    s =dbmd.getSystemFunctions();   System.out.println("数据库的所有系统函数的列表: "+s);   System.out.println(" ");    s =dbmd.getTimeDateFunctions();   System.out.println("数据库的所有日期时间函数的列表: "+s);   System.out.println(" ");    rs =dbmd.getTypeInfo();   while(rs.next())     {       System.out.print(" 数据类型名:"+rs.getString(1));       System.out.print("  数据类型:"+rs.getString(2));       System.out.print(" 精度:"+   rs.getString(3));       System.out.println(" 基数:"+   rs.getString(18));     }     System.out.println(" ");    s =dbmd.getURL();   System.out.println("此数据库的url: "+s);   System.out.println(" ");    s =dbmd.getUserName();   System.out.println("此数据库的用户: "+s);   System.out.println(" ");    String [] t = { "TABLE", "VIEW" };    rs =dbmd.getTables(null, "HR", "%", t);   while(rs.next()){     System.out.print("目录名:"+rs.getString(1));     System.out.print(" 模式名:"+rs.getString(2));     System.out.print(" 表名:"+rs.getString(3));     System.out.print(" 表的类型:"+rs.getString(4));     System.out.println(" 注释:"+rs.getString(5));     }     System.out.println(" ");    rs =dbmd.getPrimaryKeys(null, "HR","EMPLOYEES");   while(rs.next()){     System.out.print("目录名:"+rs.getString(1));     System.out.print(" 模式名:"+rs.getString(2));     System.out.print(" 表名:"+rs.getString(3));     System.out.print(" 列名顺序号:"+rs.getString(4));     System.out.print(" 列名顺序号:"+rs.getString(5));     System.out.println(" 主键名:"+rs.getString(6));     }     System.out.println(" ");    rs = dbmd.getTableTypes();    System.out.println(" 表的类型有:");    while(rs.next())      System.out.print("  "+ rs.getString(1));      System.out.println();      System.out.println(" ");    rs = dbmd.getColumns(null, "HR", "EMPLOYEES", "%");    System.out.println(" 表名 "+" 列名 "+"  数据类型"+"本地类型名"+" 列的大小"+ " 小数位数"+" 数据基数"+" 是否可空"+" 索引号");    while(rs.next()){     System.out.print(rs.getString(3)+" ");     System.out.print(rs.getString(4)+" ");     System.out.print(rs.getString(5)+" ");     System.out.print(rs.getString(6)+" ");     System.out.print(rs.getString(7)+" ");     

原创粉丝点击