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);
}
}
}