ResultSetMetaData和DatabaseMetaData实现数据库中属性,属性值,属性所赋值的获取等
----------------------------------------------
有些类下面代码中有;
public class Test1 {
TestDAO t=new TestDAO();
/*
* ResultSetMetaData:描述结果集里的元数据。
* 可以得到结果集里的基本信息:结果集有哪些列,列名,列别名;
* 结合反射可以得到通用的查询方法
* */
@Test
public void testResultSetMetaData() throws Exception{
Connection connection=null;
PreparedStatement preparedStatement=null;
ResultSet resultSet=null;
try {
String sql="select id,name,email,birth from customer ";
connection=t.getConnection();
preparedStatement=connection.prepareStatement(sql);
resultSet=preparedStatement.executeQuery();
ResultSetMetaData rsmd=(ResultSetMetaData) resultSet.getMetaData();
//得到列的个数
int n=rsmd.getColumnCount();
System.out.println(n);
for(int i=0;i<n;i++){
//得到列名
String columnname=rsmd.getColumnName(i);
//获取到列的别名
String columnLabel=rsmd.getColumnLabel(i);
//得到列的值
Object columnValues=resultSet.getObject(columnLabel);
System.out.println(columnname+"--"+columnLabel+":"+columnValues);
}
} catch (Exception e) {
e.printStackTrace();
}finally {
t.close(connection, preparedStatement, resultSet);
}
}
/*
* DatabaseMetaData对象是在Connection对象上获取的,
* DatabaseMetaData类中提供了很多方法可以获得数据源的信息
* 了解
* */
public void testDatabaseMetaData() throws Exception{
Connection connection=null;
ResultSet resultSet =null;
try {
connection=t.getConnection();
DatabaseMetaData data=connection.getMetaData();
//可以得到数据库的一些基本信息
//得到数据库的版本号
int version=data.getDatabaseMajorVersion();
System.out.println(version);
//得到连接数据库的用户名
String user=data.getUserName();
System.out.println(user);
//得到mysql中有哪些数据库
resultSet=data.getCatalogs();
while(resultSet.next()){
System.err.println(resultSet.getString(1));
}
} catch (Exception e) {
e.printStackTrace();
}finally {
t.close(connection, null, resultSet);
}
}
}