JDBC以及相关技术学习(八)----JDBC元数据

元数据是什么?元数据就是本身固有的特性,比如数据库的元数据,就是指数据库本身具有的各种特性,如是否支持事务,数据库名称等。

在JDBC中,元数据主要包括三种,即数据库元数据(DatabaseMetaData)、参数元数据(ParameterMetaData)、结果集元数据(ResultSetMetaData)


数据库元数据:

Connection conn = JdbcUtils.getConnection();

DatabaseMetaData dbmd = conn.getMetaData();        //获得数据库元数据对象

System.out.println( dbmd.getDatabaseProductName()); //打印数据库名称

Systme.out.println( dbmd.supportsTransactions()); //打印是否支持事务

.........

需要注意,数据库元数据的对象是从connection中获取的,而其他元数据则是从PreparedStatement与ResultSet获取的。


参数元数据:

PreparedStatement pStatement = conn.prepareStatement(sql);
ParameterMetaData pmd = pStatement.getParameterMetaData();
int count = pmd.getParameterCount();//获取到参数的个数
for(int i = 1; i < count;i++)
{
System.out.println(pmd.getParameterClassName(i));//打印JAVA数据类型名, 如java.lang.String
System.out.println(pmd.getParameterType(i));//打印数据库类型号
System.out.println(pmd.getParameterTypeName(i));//打印数据库类型名,如varchar

}


数据集元数据:

这个元数据是最重要的,很多ORM框架就是使用JDBC获取数据后,根据结果集元数据给对象赋值(利用反射技术),实现对象的持久化的,上代码:

public static void read(String sql) throws SQLException{
JDBCToolSingleTon jDBCToolSingleTon = JDBCToolSingleTon.getInstance();
Connection conn = jDBCToolSingleTon.getConnection();
 
PreparedStatement pStatement = conn.prepareStatement(sql);
 
 
ResultSet resultSet = pStatement.executeQuery();//注意,这里不能加上参数,否则就是调用了Statement了
ResultSetMetaData rsmd = resultSet.getMetaData();//获取结果集源数据
int count = rsmd.getColumnCount();//获取列数量
String[] colNames = new String[count];
for(int i = 1; i <=count;i++){
System.out.println(rsmd.getColumnClassName(i));//类名
System.out.println(rsmd.getColumnName(i));//列名
System.out.println(rsmd.getColumnLabel(i));//列标签

}
 
Map<String,Object> data = null;
 
if(resultSet.next()){
data = new HashMap<String,Object>();
for(int i = 0; i <colNames.length;i++ ){
data.put(colNames[i], resultSet.getObject(colNames[i]));
}
System.out.println(resultSet.getString("name"));
}
jDBCToolSingleTon.freeResource(conn, resultSet, pStatement);








评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值