分析数据库元素局

一、DatabaseMetaData

DatabaseMetaData可以得到数据库的一些基本信息,如数据库的名称、版本和表的信息等。

(1)基本方法

DatabaseMetaData基本方法
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)基本方法

ResultSetMetaData的方法
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();
	}
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值