元数据
1.定义
描述数据的数据叫元数据
2.分类
- 数据库元数据(DataBaseMetaData)
DataBaseMetaData对象可以通过java.sql.Connection对象获取,常用方法如下:
代码示例:
/**
* 步骤:
* 1、先定义据库链接
* 2、加载驱动
* 3、获取链接
* 4、通过dbMeteData获取数据库的信息**/
public class MeteDataDemo {
private final static String Driver = "com.mysql.jdbc.Driver?generateSimpleParameterMetadata=true";
private final static String Url = "jdbc:mysql://localhost:3306/xxx";//自己的数据库名称
private final static String Username = "xxx";//自己的用户名
private final static String Password = "xxx";//自己的密码
public static void databaseMetaData(){
try {
Class.forName(Driver);
Connection connection = DriverManager.getConnection(Url, Username, Password);
DatabaseMetaData dbMetaData = connection.getMetaData();
System.out.println("数据库名:" + dbMetaData.getDatabaseProductName());
System.out.println("数据库版本信息:" + dbMetaData.getDatabaseProductVersion());
System.out.println("数据库驱动名:" + dbMetaData.getDriverName());
System.out.println("数据库URL:" + dbMetaData.getURL());
System.out.println("数据库用户名:" + dbMetaData.getUserName());
System.out.println("=============");
ResultSet rs = dbMetaData.getPrimaryKeys(null, dbMetaData.getDatabaseProductName(), "t_tag");
while (rs.next()){
Object tableName = rs.getObject(3);
Object columnName = rs.getObject(4);
System.out.println(tableName + "-----" + columnName);
}
} catch (ClassNotFoundException | SQLException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
databaseMetaData();
}
}
测试截图:
在这里插入图片描述
表名和列名都对
- 参数元数据(ParameterMetadata)
ParameterMetadata对象可以通过java.sql.PreparedStatement对象获取。PreparedStatement接口的常见方法如下:
代码示例:
public static void parameterMetaData() {
try {
Class.forName(Driver);
Connection connection = DriverManager.getConnection(Url, Username, Password);
PreparedStatement pstmt = connection.prepareStatement("select * from t_tag where tid = ? and tname = ? ");
//通过pstme获取参数元数据
ParameterMetaData metaData = pstmt.getParameterMetaData();
int count = metaData.getParameterCount();
System.out.println("参数个数:" + count);
for (int i = 1; i <= count; i++) {
String typeName = metaData.getParameterTypeName(i);
System.out.println(typeName);
}
} catch (ClassNotFoundException | SQLException e) {
e.printStackTrace();
}
}
测试截图:
- 结果集元数据(ResultSetMetadata)
ResultSetMetadata对象可以通过java.sql.ResultSet对象获取。ResultSetMetadata接口的常见方法如下
代码示例:
public static void ResultSetMetadata() {
try {
Class.forName(Driver);
Connection connection = DriverManager.getConnection(Url, Username, Password);
PreparedStatement pstmt = connection.prepareStatement("select * from t_tag");
ResultSet rs = pstmt.executeQuery();
ResultSetMetaData metaData = rs.getMetaData();
int count = metaData.getColumnCount();
System.out.println("t_tag表的列数为:" + count);
for (int i = 1; i <= count; i++){
String columnName = metaData.getColumnName(i);
String columnTypeName = metaData.getColumnTypeName(i);
System.out.println(columnName + "\t" + columnTypeName);
}
while (rs.next()){
for (int i = 1; i <= count; i++ ){
System.out.print(rs.getObject(i) + "\t");
}
System.out.println();
}
} catch (ClassNotFoundException | SQLException e) {
e.printStackTrace();
}
}
测试截图: