元数据(metaData): 指数据库中库,表,列 的定义信息
1>DataBaseMetaData 数据库元数据
Connection conn= JdbcUtils.getConnection();
DatabaseMetaData dmd=conn.getMetaData();
String driverName=dmd.getDriverName(); //获取驱动名称
System.out.println(driverName);
String userName=dmd.getUserName();//获取用户名
System.out.println(userName);
String url=dmd.getURL();//获取url
System.out.println(url);
String databaseProductName=dmd.getDatabaseProductName();/获取数据库名称
System.out.println(databaseProductName);
String databaseProductVersion=dmd.getDatabaseProductVersion();//获取数据库版本
System.out.println(databaseProductVersion);
2> ParameterMetaData 参数元数据
主要用户获取sql语句中占位符的相关信息
public static void main(String[]args) throws Exception{
Connection conn= JdbcUtils.getConnection();
String sql="select * from account where id=? and name=?";
PreparedStatement pst=conn.prepareStatement(sql);
ParameterMetaData pmd=pst.getParameterMetaData();
int count=pmd.getParameterCount();
System.out.println(count);
String type=pmd.getParameterTypeName(1);
System.out.println(type);
}
##### 注意:在获取参数类型时会产生异常
java.sql.SQLException: parameter metadata not available for the given statement
解决方案:在url后面添加参数
url=jdbc:mysql:///javastudy?generateSimpleParameterMetadata=true
添加参数后,获取的结果也是varchar,原因是mysql驱动的支持问题。
3> ResultSetMetaData 结果集元数据
public static void main(String[] args) throws Exception {
Connection conn= JdbcUtils.getConnection();
ResultSet rs=conn.createStatement().executeQuery("select * from account");
//得到结果集元数据
ResultSetMetaData rsmd=rs.getMetaData();
System.out.println(rsmd.getColumnCount()); //获取结果集列数量
System.out.println(rsmd.getColumnName(2)); //获取结果集中指定列的名称
System.out.println(rsmd.getColumnTypeName(1));//获取结果集中指定列的类型
}
本文介绍了数据库元数据的概念及其三种主要形式:数据库元数据、参数元数据和结果集元数据,并提供了具体的实现示例。
1979

被折叠的 条评论
为什么被折叠?



