1 关于sql参数的元数据:
package com.qf.e_metadata;
import com.qf.utils.JdbcUtil;
import java.sql.Connection;
import java.sql.ParameterMetaData;
import java.sql.PreparedStatement;
import java.sql.SQLException;
public class Demo1 {
public static void main(String[] args) throws SQLException {
Connection connection = JdbcUtil.getConnection();
String sql = "insert into work (name, age, info) values(?,?,?)";
PreparedStatement preparedStatement = connection.prepareStatement(sql);
//获取sql的参数(?)有几个 借助于参数元数据
//借助于U预处理搬运工对象获取 参数元数据对象
ParameterMetaData parameterMetaData = preparedStatement.getParameterMetaData();
int parameterCount = parameterMetaData.getParameterCount();//得到参数的个数
System.out.println(parameterCount);//3
//要个数有啥用
Object[] objs = {"张三", 112, "喜欢睡觉"};//数组 用来对?进行赋值的
for (int i = 1; i <= parameterCount; i++) {
//对?进行赋值
preparedStatement.setObject(i, objs[i - 1]);
}
}
}
2 关于结果集的元数据
package com.qf.e_metadata;
import com.qf.utils.JdbcUtil;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
public class Demo3 {
public static void main(String[] args) throws Exception{
Connection connection = JdbcUtil.getConnection();
String sql = "select * from work";
PreparedStatement preparedStatement = connection.prepareStatement(sql);
ResultSet resultSet = preparedStatement.executeQuery();
//通过结果集对象获取结果集元数据
ResultSetMetaData metaData = resultSet.getMetaData();
//ResultSetMetaData 结果集元数据中存的有字段的个数 和字段名字 等
//getColumnCount 字段的个数
int columnCount = metaData.getColumnCount();
System.out.println(columnCount);
for (int i = 1; i <= columnCount ; i++) {
String columnName = metaData.getColumnName(i);
System.out.println(columnName);
}
while (resultSet.next()) {//行
for (int i = 1; i <= columnCount ; i++) {//列
String columnName = metaData.getColumnName(i);
Object object = resultSet.getObject(columnName);
System.out.println(object);
}
}
}
}