您的位置:首页 > 编程语言 > Java开发

通过JDK API 获取数据库元数据(反射数据库)

2012-07-15 00:15 351 查看
package org.fkjava.metadata;

import java.sql.*;

import org.fkjava.factory.ConnectionFactory;

/**
* 测试元数据
* */
public class ResultSetMetaData_Test {

public static void showMetadata(Connection con) throws SQLException {
DatabaseMetaData md = con.getMetaData();
//获取底层数据库的主版本号。
System.out.println("getDatabaseMajorVersion:  "
+ md.getDatabaseMajorVersion());

//底层数据库的次版本号。
System.out.println("getDatabaseMinorVersion:  "
+ md.getDatabaseMinorVersion());

// 获取此数据库产品的名称。
System.out.println("getDatabaseProductName:  "
+ md.getDatabaseProductName());

// 获取此数据库产品的版本号。
System.out.println("getDatabaseProductVersion:  "
+ md.getDatabaseProductVersion());

//获取此数据库的默认事务隔离级别。
System.out.println("getDefaultTransactionIsolation:  "
+ md.getDefaultTransactionIsolation());

//获取此 DBMS 的 URL。
System.out.println("getURL:  " + md.getURL());

// 获取此数据库的已知的用户名称。
System.out.println("getUserName:  " + md.getUserName());

}

public static void showMeatdataOfTable(Connection con, String tablename)
throws SQLException {
Statement stm = con.createStatement();
ResultSet rs = stm.executeQuery("select * from " + tablename);
//可用于获取关于 ResultSet 对象中列的类型和属性信息的对象
ResultSetMetaData rmsds = rs.getMetaData();
//返回此 ResultSet 对象中的列数。
int count = rmsds.getColumnCount();
while(rs.next()){
for (int i = 1; i <= count; i++) {
// 获得列名和数据类型
System.out.print("列名: " + rmsds.getColumnName(i) + "\t");
System.out.print("数据类型: " + rmsds.getColumnTypeName(i) + "\t");
System.out.print("字段值: " + rs.getObject(rmsds.getColumnName(i)));
System.out.println();
}
System.out.println();
}
}

public static void main(String[] args) {
Connection con = null;
try {

con = ConnectionFactory.getConnection();
System.out.println("获得数据信息:");
showMetadata(con);
System.out.println();
System.out.println("获得表的数据信息:");
showMeatdataOfTable(con, "tb_user");
System.out.println();

} catch (Exception e) {
e.printStackTrace();
} finally {
ConnectionFactory.close(con, null, null);
}

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: