第一个元数据 在另一篇文章中提及:
http://blog.csdn.net/dada111111111/article/details/51326837
这里 就不陈述了。
三个元数据将在后面的代码中进行解释。首先了解每个元数据的作用。
第二个元数据的作用:获得占位符的个数
第三个元数据:可以获得结果集中的列的相关信息(列名,列的值类型,类的个数等),在OR映射
(什么是or? (ORM) O=object, R=relation ,M=mapping–也就是将关系表映射到实体类javaBean 中,实现持续的保存数据,减轻数据库的负担。)中,可以得到列的名称和属性类型并反射到JavaBean中
简单的代码示例:
package com.test.metaDataDemo;
import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.ParameterMetaData;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import org.junit.Test;
import com.mystore.utils.JdbcUtils;
//数据库元数据的测试demo
/*
* 使用c3p0连接池
* 三大元数据
* 1.DataBaseMetaData--数据元数据
* 2.ParemeterMetaData--参数元数据--获得占位符的个数 可用于循环设置占位符
* 3.ResultSetMetaData--结果集元数据--封装了结果集的列,包括列的名称和值类型
*/
public class metaDataDemo {
/********************元数据1*********************/
//测试数据元数据
@Test
public void testMetaData()throws Exception{
//得到连接
Connection conn = JdbcUtils.getConnection();
//获得元数据
DatabaseMetaData metaData = conn.getMetaData();
//得到url
String string = metaData.getURL();
System.out.println(string);
//getUserName
System.out.println("userName:"+metaData.getUserName());
}
/********************元数据2*********************/
//测试参数元数据
@Test
public void testParameterMetaData() throws Exception{
Connection conn = JdbcUtils.getConnection();
//预处理
PreparedStatement stmt = conn.prepareStatement("select * from users where userName=?");
//获得元数据
ParameterMetaData pmd = stmt.getParameterMetaData();
//参数元数据 可以获得预处理占位符的个数
System.out.println(pmd.getParameterCount());
}
/********************元数据*********************/
@Test
public void testResultSetMetaData() throws Exception{
Connection conn = JdbcUtils.getConnection();
//预处理
PreparedStatement stmt = conn.prepareStatement("select * from users ");
//返回结果集
ResultSet rs = stmt.executeQuery();
//获得结果集元数据
ResultSetMetaData rData = rs.getMetaData();
//获得列的数量
int columnCount = rData.getColumnCount();
System.out.println("列的数量为:"+columnCount);
//循环输出列名
for (int i = 1; i < columnCount+1; i++) {
System.out.println("列名依次为:"+rData.getColumnName(i));
}
//还可以获得列的属性类型等信息 就不列举了
}
}