创建数据库
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