package com.itheima.test;
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 java.sql.SQLException;
import java.sql.Statement;
import org.junit.Test;
import com.itheima.utils.C3P0Util;
/**
* 元数据:
* 数据库元数据
* 参数元数据
* 结果集元数据
* @author wangli
*
*/
public class MetaDataTest {
@Test //数据库元数据
public void testDataBase(){
Connection con = null;
Statement st = null;
try {
con = C3P0Util.getConneciton();
//获取数据库元数据
DatabaseMetaData dmd = con.getMetaData();
//元数据中包含的数据库名,数据库版本信息
String productName = dmd.getDatabaseProductName();//元数据中包含的数据库名
String version = dmd.getDatabaseProductVersion();//得到版本
System.out.println(productName+","+version);
} catch (SQLException e) {
e.printStackTrace();
}finally{
C3P0Util.release(null, st, con);
}
}
@Test //数据库元数据
public void testParameterMetaData(){
Connection con = null;
PreparedStatement st = null;
try {
con = C3P0Util.getConneciton();
st = con.prepareStatement("insert into account values(?,?,?)");
//st = con.prepareStatement("?????");
ParameterMetaData pmd = st.getParameterMetaData();//用于获取参数元数据对象
//获取元数据 : 参数个数
int count = pmd.getParameterCount();
System.out.println(count+"");
} catch (SQLException e) {
e.printStackTrace();
}finally{
C3P0Util.release(null, st, con);
}
}
@Test //结果集元数据
public void testResultSetMetaData(){
Connection con = null;
PreparedStatement st = null;
ResultSet rs = null;
try {
con = C3P0Util.getConneciton();
st = con.prepareStatement("select * from account");
rs = st.executeQuery();
//取出结果集元数据对象
ResultSetMetaData rsmd = rs.getMetaData();
//得到列数
int count = rsmd.getColumnCount();//得到了列数
for (int i = 1; i <=count; i++) {
//得到每列列名
String columnName= rsmd.getColumnName(i);
//得到列的类型
String columnType = rsmd.getColumnTypeName(i);
System.out.println(columnName+":"+columnType);
}
} catch (SQLException e) {
e.printStackTrace();
}finally{
C3P0Util.release(rs, st, con);
}
}
}