package com.atguigu.jdbc;
import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import org.junit.Test;
public class MetaDataTest {
/**
* DatabaseMetaData是描述数据库的元数据对象 可以由Connection得到
*/
@Test
public void testDatabassMetaData() {
Connection connection = null;
ResultSet resultSet=null;
try {
connection = JDBCTools.getConnection();
DatabaseMetaData data = connection.getMetaData();
// 可以得到數據庫本身的一些基本信息
//数据库版本号
int i=data.getDatabaseMajorVersion();
System.out.println(i);
//数据库已知用户名称
String userName=data.getUserName();
System.out.println(userName);
//mySQL中有哪些数据库
resultSet=data.getCatalogs();
while(resultSet.next()){
System.out.println(resultSet.getString(1));
}
} catch (Exception e) {
e.printStackTrace();
} finally {
JDBCTools.release(null, null, connection);
}
}
/**
* 描述结果集的元数据。可以得到结果集中的基本信息:有哪些列,列名、别名等
*/
@Test
public void testResultSetMetaData(){
Connection connection=null;
PreparedStatement preparedStatement=null;
ResultSet resultSet=null;
try{
connection=JDBCTools.getConnection();
String sql="select id,name,email,birth from customers";
preparedStatement=connection.prepareStatement(sql);
resultSet=preparedStatement.executeQuery();
//得到了ResultSetMetaData
ResultSetMetaData resultSetMetaData=resultSet.getMetaData();
//得到列的个数、列的别名及列名
for(int i=0;i<resultSetMetaData.getColumnCount();i++){
String columnLabel=resultSetMetaData.getColumnLabel(i+1);
System.out.println(columnLabel);
String columnName=resultSetMetaData.getColumnName(i+1);
System.out.println(columnName+":"+columnLabel);
}
}catch(Exception e){
e.printStackTrace();
}finally{
JDBCTools.release(resultSet, preparedStatement, connection);
}
}
}