元数据:在jdbc中获取数据库的定义,例如:数据库、表、列的定义信息。就用到元数据
元数据定义相关api
Connection con = JDBCUtil.getConnection();
DatabaseMetaData metaData = con.getMetaData();
// 获取数据库登录名
System.out.println(metaData.getUserName());
// 获取数据库登录的URL
System.out.println(metaData.getURL());
获取参数元数据,得到预处理sql参数个数
/**
* 参数元数据
* @throws Exception
*/
@Test
public void test2() throws Exception{
Connection con = JDBCUtil.getConnection();
String sql = "select * from stu where id=? and name=?;";
PreparedStatement pstmt = con.prepareStatement(sql);
// 获取参数元数据
ParameterMetaData p = pstmt.getParameterMetaData();
// 获取参数个数
int count = p.getParameterCount();
System.out.println(count);
}
结果集元数据:得到查询结果的列的个数及列名称
/**
* 结果元数据
* @throws Exception
*/
@Test
public void test3() throws Exception{
Connection con = JDBCUtil.getConnection();
String sql = "select * from stu where id=?;";
PreparedStatement pstmt = con.prepareStatement(sql);
pstmt.setInt(1, 3);
ResultSet rs = pstmt.executeQuery();
// 获取结果元数据
ResultSetMetaData metaData = rs.getMetaData();
// 获取列的个数
int count = metaData.getColumnCount();
System.out.println("数据库列个数:"+count);
// 获取每行的结果
while(rs.next()){
for(int i=1;i<=count;i++){
// 获取每列的名称
String columnName = metaData.getColumnName(i);
// 获取每列的数据
Object obj = rs.getObject(i);
System.out.println(columnName+":"+obj.toString());
}
}
}