一、DatabaseMetaData
DatabaseMetaData可以得到数据库的一些基本信息,如数据库的名称、版本和表的信息等。
(1)基本方法
String getDatabaseProductName() throws SQLException | 获取数据库名称 |
int getDatabaseMajorVersion() | 获取数据库主版本号 |
int getDatabaseMinorVersion() | 获取数据库次版本号 |
ResultSet getPrimaryKeys(String catalog,String schema,String table) throws SQLException |
获取表主键信息。ResultSet中数据如下: 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)。 |
(2)实例
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.DatabaseMetaData;
import java.sql.ResultSet;
public class DatabaseMetaDataDemo{
//mysql数据库驱动
public static final String DBDRIVER="com.mysql.cj.jdbc.Driver";
//mysql数据库连接地址
public static final String DBURL="jdbc:mysql://localhost:3306/mldn?useSSL=false&serverTimezone=UTC";
//mysql数据库连接用户名
public static final String DBUSER="root";
//mysql数据库连接密码
public static final String DBPASS="root";
public static void main(String[] args) throws Exception{
//1、加载数据库驱动
Class.forName(DBDRIVER);
//2、获取数据库连接
Connection conn=DriverManager.getConnection(DBURL,DBUSER,DBPASS);
//3、获取数据库元信息
DatabaseMetaData dmd=conn.getMetaData();
//4、获取数据库信息
System.out.println("数据库名称:"+dmd.getDatabaseProductName());
System.out.println("数据库版本:"+dmd.getDatabaseMajorVersion()+"."+dmd.getDatabaseMinorVersion());
ResultSet rs=dmd.getPrimaryKeys(null,null,"user");
while(rs.next()){
System.out.println("表名称:"+rs.getString(1));
System.out.println("表模式:"+rs.getString(2));
System.out.println("表名称:"+rs.getString(3));
System.out.println("列名称:"+rs.getString(4));
System.out.println("主键序列号:"+rs.getString(5));
System.out.println("主键名称:"+rs.getString(6));
}
//5、关闭数据库连接
rs.close();
conn.close();
}
}
二、ResultSetMetaData
ResultSetMetaData可以获得ResultSet对象中列的类型和属性信息。
(1)基本方法
int getColumnCount() throws SQLException | 返回查询结果中的列数 |
bollean isAutoIncrement(int column) throws SQLException | 判断指定列是否是自动编号 |
String getColumnName(int column) throws SQLException | 返回列的名称 |
(2)实例
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSetMetaData;
public class ResultSetMetaDataDemo{
//mysql数据库驱动
public static final String DBDRIVER="com.mysql.cj.jdbc.Driver";
//mysql数据库连接地址
public static final String DBURL="jdbc:mysql://localhost:3306/mldn?useSSL=false&serverTimezone=UTC";
//mysql数据库连接用户名
public static final String DBUSER="root";
//mysql数据库连接密码
public static final String DBPASS="root";
public static void main(String[] args) throws Exception{
//1、加载数据库驱动
Class.forName(DBDRIVER);
//2、获取数据库连接
Connection conn=DriverManager.getConnection(DBURL,DBUSER,DBPASS);
//3、实例化PreparedStatement对象
String sql="SELECT id,name,password,age,sex,birthday FROM user";
PreparedStatement pstmt=conn.prepareStatement(sql);
ResultSetMetaData rsmd=pstmt.getMetaData();
System.out.println("一共返回"+rsmd.getColumnCount()+"条数据。");
if(rsmd.isAutoIncrement(1)){
System.out.println(rsmd.getColumnName(1)+"列是自动增长的。");
}
//4、关闭数据库连接
conn.close();
}
}