数据库元数据 ParameterMetaData和 ResultSetMetaData

创建数据库

CREATE TABLE `user` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(255) DEFAULT NULL,
  `age` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb4;

ParameterMetaData元数据

使用PreparedStatement.getParameterMetaData() 获得代表PreparedStatement元数据的ParameterMetaData对象。
ParameterMetaData对象的常用方法:
getParameterCount(): 获得指定参数的个数
getParameterType(int param):获得指定参数的sql类型,MySQL数据库驱动不支持

        Connection connection = ConnectionManager.get();
        System.out.println(connection);
        PreparedStatement preparedStatement = connection.prepareStatement(" select * from user where id = ?");
        ParameterMetaData parameterMetaData = preparedStatement.getParameterMetaData();
        int parameterCount = parameterMetaData.getParameterCount();
        System.out.println("参数个数:" + parameterCount);
//        int parameterType = parameterMetaData.getParameterType(0);//获得指定参数的sql类型,MySQL数据库驱动不支持
//        System.out.println("参数类型:" + parameterType);

ResultSetMetaData元数据

使用ResultSetMetaData元数据
  ResultSet. getMetaData() 获得代表ResultSet对象元数据的ResultSetMetaData对象。
 ResultSetMetaData对象的常用方法:
getColumnCount() 返回resultset对象的列数
getColumnName(int column) 获得指定列的名称
getColumnLabel(int column) 获取用于打印输出和显示的指定列的建议标题(列名使用了AS 别名的情况),如果没指定则与列名保持一致
getColumnTypeName(int column)获得指定列的类型

     Connection connection = ConnectionManager.get();
        PreparedStatement preparedStatement = connection.prepareStatement(" select id,user_name as userName, age,password from person where id=1");
        //ResultSet.getMetaData()获得代表ResultSet对象元数据的ResultSetMetaData对象
        ResultSet rs = preparedStatement.executeQuery();
        ResultSetMetaData metadata = rs.getMetaData();
        //getColumnCount() 返回resultset对象的列数
        System.out.println(metadata.getColumnCount());
        //getColumnName(int column) 获得指定列的名称
        System.out.println(metadata.getColumnName(2));
        //getColumnLabel(int column) 获取列的别名
        System.out.println(metadata.getColumnLabel(2));
        //getColumnTypeName(int column)获得指定列的类型
        System.out.println(metadata.getColumnTypeName(2));;

执行结果:

	4
	user_name
	userName
	VARCHAR
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值