服务热线:13616026886

技术文档 欢迎使用技术文档,我们为你提供从新手到专业开发者的所有资源,你也可以通过它日益精进

位置:首页 > 技术文档 > JAVA > 新手入门 > 基础入门 > 查看文档

[java100例]056、数据库元数据

import java.sql.*;
/**
 * <p>title: 数据库元数据</p>
 * <p>description: 使用数据库元数据对象获取数据库信息。</p>
 * <p>copyright: copyright (c) 2003</p>
 * <p>filename: jdbcdatameta.java</p>
 * @version 1.0
 */
public class jdbcdatameta {
 private string url="";
 private string username="";
 private string password="";
/**
 *<br>方法说明:主方法
 *<br>输入参数:
 *<br>返回类型:
 */
 public static void main(java.lang.string[] args) {
    if(args.length!=4){
      system.out.println("use: java jdbcdatameta url username password tablename");
      return;
    }
    jdbcdatameta jdm = new jdbcdatameta();
    jdm.url = args[0];
    jdm.username=args[1];
    jdm.password=args[2];
    jdm.getmeta(jdm.conn(),args[3]);
}


/**
 *<br>方法说明:获得数据连接
 *<br>输入参数:
 *<br>返回类型:connection 连接对象
 */ 
  public connection conn(){
     try {
        class.forname("oracle.jdbc.driver.oracledriver");
        connection con = drivermanager.getconnection(url, username, password);
        return con;
    }catch(classnotfoundexception cf){
     system.out.println("can´t find class"+cf);
     return null;
    }catch(sqlexception sqle){
     system.out.println("can´t connection db:"+sqle);
     return null;
    } catch (exception e) {
        system.out.println("failed to load jdbc/odbc driver.");
        return null;
    }
  }
/**
 *<br>方法说明:获取数据元数据信息
 *<br>输入参数:connection con 数据库连接
 *<br>输入参数:string table 表名称
 *<br>返回类型:
 */
  public void getmeta(connection con, string table){
   try {
     databasemetadata dbmd = con.getmetadata();
     //获取驱动名
     string dataname = dbmd.getdrivername();
     string dataurl = dbmd.geturl();
     system.out.println("**************** data meta comment  *********************");
     system.out.println("dataname="+dataname);
     system.out.println("dataurl="+dataurl);
     //获取数据库最大支持字节数
     int datamaxsize = dbmd.getmaxrowsize();
     system.out.println("datamaxsize="+datamaxsize);
     //获取数据库表信息
     string[] types = new string[1];
     types[0] = "table";
     resultset results = dbmd.gettables(null, null, "%", types);
     system.out.println("********************tables information********************");
     while (results.next())
     {
        system.err.println("----------------------------");
        system.err.println("table_cat   : "+results.getobject(1));
        system.err.println("table_schem : "+results.getobject(2));
        system.err.println("table_name  : "+results.getobject(3));
        system.err.println("table_type  : "+results.getobject(4));
        system.err.println("remarks     : "+results.getobject(5));
    }
     //获取表主键信息
     resultset pkrset = dbmd.getprimarykeys(null, null, table);
     system.out.println("********************pk information********************");
      while(pkrset.next()){
        system.err.println("table_cat : "+pkrset.getobject(1));
        system.err.println("table_schem: "+pkrset.getobject(2));
        system.err.println("table_name : "+pkrset.getobject(3));
        system.err.println("column_name: "+pkrset.getobject(4));
        system.err.println("key_seq : "+pkrset.getobject(5));
        system.err.println("pk_name : "+pkrset.getobject(6));
     }


    system.out.println("*****************fk information***********************");
    //获取表外键信息
    results = dbmd.getimportedkeys(null, null, table);
     while (results.next())
     {
        system.err.println("pktable_cat   : "+results.getobject(1));
        system.err.println("pktable_schem : "+results.getobject(2));
        system.err.println("pktable_name  : "+results.getobject(3));
        system.err.println("pkcolumn_name : "+results.getobject(4));
        system.err.println("fktable_cat   : "+results.getobject(5));
        system.err.println("fktable_schem : "+results.getobject(6));
        system.err.println("fktable_name  : "+results.getobject(7));
        system.err.println("fkcolumn_name : "+results.getobject(8));
        system.err.println("key_seq       : "+results.getobject(9));
        system.err.println("update_rule   : "+results.getobject(10));
        system.err.println("delete_rule   : "+results.getobject(11));
        system.err.println("fk_name       : "+results.getobject(12));
        system.err.println("pk_name       : "+results.getobject(13));
        system.err.println("deferrability : "+results.getobject(13));
    }
     }catch (sqlexception se) {
       // 输出数据库连接错误信息
       system.out.println("sql exception: " + se.getmessage());
       se.printstacktrace(system.out);
    }catch(exception e){
       system.out.println(e);
    }finally{
       try{
       con.close();
      }catch(sqlexception se){}
    }
  }


}

扫描关注微信公众号