MetaData 元数据
指数据库中 库、表、列的定义信息。
DataBaseMetaData 数据库元数据
通过DataBaseMetaData获取数据库连接的基本信息
- getURL(); 返回一个String类对象,代表数据库的URL
- getUserName(); 返回连接当前数据库管理系统的用户名
- getDriverName(); 返回驱动程序的名称
- getPrimaryKeys(String catalog, String schema, String table); 返回指定表主键的结果集
- 1 - TABLE_CAT String => 表类别(可为null)
- 2 - TABLE_SCHEM String => 表模式(可为null)
- 3 - TABLE_NAME String => 表名称
- 4 - COLUMN_NAME String => 列名称
- 5 - KEY_SEQ short => 主键中的序列号
- 6 - PK_NAME String =>主键的名称(可为null)
public class DataBaseMetaDataTest {
public static void main(String[] args) throws Exception {
Connection con = jdbcUtils.getConnection();
//获取DataBaseMetaData对象
DatabaseMetaData dmd = con.getMetaData();
String driverName = dmd.getDriverName();
System.out.println(driverName);
String userName = dmd.getUserName();
System.out.println(userName);
String url = dmd.getURL();
System.out.println(url);
//数据库产品名称,MySQL
String name = dmd.getDatabaseProductName();
System.out.println(name);
//版本
String version = dmd.getDatabaseProductVersion();
System.out.println(version);
ResultSet rs = dmd.getPrimaryKeys(null, null, "account");
while(rs.next()){
System.out.println(rs.getObject(3));//3,代表第三列TABLE_NAME
}
}
}
获取数据库表、列、主键、外键定义信息
- getTables
- getColumns
- getPrimaryKeys
ParameterMetaData 参数元数据
参数元数据主要用于获取sql语句中占位符的相关信息。
- 获取参数元数据
- PreparedStatement.getParameterMetaData()
- ParameterMetaData 对象
- getParameterCount() 获取指定参数的个数
- getParameterTypeName(int param) 获得指定参数的sql类型
public class ParameterMetaDateTest {
public static void main(String[] args) throws Exception {
Connection con = jdbcUtils.getConnection();
String sql = "select * from account where id=?";
PreparedStatement pst = con.prepareStatement(sql);
//获取一个ParameterMetaData
ParameterMetaData pm = pst.getParameterMetaData();
int count = pm.getParameterCount();//获取参数个数
String name = pm.getParameterTypeName(1);
//需要在url后添加参数?generateSimpleParameterMetadata=true
System.out.println(name);
}
}
ResultSetMetaData结果集元数据(重点)
- 获得ResultSetMetaData对象
- ResultSet.getMetaData();
- ResultSetMetaData对象
- getColumnCount(); 返回resultSet对象的列数
- getColumnName(int column);
- getColumnTypeName(int column);
public class ResultSetMetaDateTest {
public static void main(String[] args) throws Exception{
Connection con = jdbcUtils.getConnection();
ResultSet rs = con.createStatement().executeQuery("select * from account");
//得到结果集元数据
ResultSetMetaData rmd = rs.getMetaData();
System.out.println(rmd.getColumnCount());
System.out.println(rmd.getColumnName(2));
System.out.println(rmd.getColumnTypeName(1));
}
}
网友评论