一、元数据
1.什么是元数据
元数据:数据库、表、列的定义信息。
2.元数据的来源
+++ JDBC开发步骤:
1.加载驱动
2.获取连接对象
3.创建执行不同sql的st对象
4.执行sql
+++ JDBC资源对象:
连接对象(Connection)
st对象(Statement、PreparedStatement、CallStatement)
结果集对象(ResultSet)
通过JDBC资源对象我们可以获取到元数据。
在jdbc中可以使用: 数据库元数据、参数元数据、结果集元数据
二、元数据的类型
元数据的类型:
DatabaseMetaData 数据库元数据
PreparedStatement 参数元数据
ResultSetMetaData 结果集元数据
2.1 获取数据库元数据
//1. 数据库元数据
@Test
public void testDB() throws Exception {
// 获取连接
Connection conn = JdbcUtil.getConnection();
// 获取数据库元数据
DatabaseMetaData metaData = conn.getMetaData();// alt + shift + L 快速获取方法返回值
System.out.println(metaData.getUserName());
System.out.println(metaData.getURL());
System.out.println(metaData.getDatabaseProductName());
}
2.2 获取参数元数据
//2. 参数元数据
@Test
public void testParams() throws Exception {
// 获取连接
Connection conn = JdbcUtil.getConnection();
// SQL
String sql = "select * from dept where deptid=? and deptName=?";
// Object[] values = {"tom","888"};
PreparedStatement pstmt = conn.prepareStatement(sql);
// 参数元数据
ParameterMetaData p_metaDate = pstmt.getParameterMetaData();
// 获取参数的个数
int count = p_metaDate.getParameterCount();
// 测试
System.out.println(count);
}
2.3 获取结果集元数据
// 3. 结果集元数据
@Test
public void testRs() throws Exception {
String sql = "select * from dept ";
// 获取连接
Connection conn = JdbcUtil.getConnection();
PreparedStatement pstmt = conn.prepareStatement(sql);
ResultSet rs = pstmt.executeQuery();
// 得到结果集元数据(目标:通过结果集元数据,得到列的名称)
ResultSetMetaData rs_metaData = rs.getMetaData();
// 迭代每一行结果
while (rs.next()) {
// 1. 获取列的个数
int count = rs_metaData.getColumnCount();
// 2. 遍历,获取每一列的列的名称
for (int i=0; i<count; i++) {
// 得到列的名称
String columnName = rs_metaData.getColumnName(i + 1);
// 获取每一行的每一列的值
Object columnValue = rs.getObject(columnName);
// 测试
System.out.print(columnName + "=" + columnValue + ",");
}
System.out.println();
}
}