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){}
}
}
}
闽公网安备 35060202000074号