[英]Java jdbc get column names of generated keys
我通过jdbc
在表中插入了一个带有复合主键的记录,并获得了主键的生成值。
pm = connection.prepareStatement(strQuery,Statement.RETURN_GENERATED_KEYS);
pm.executeUpdate();
ResultSet rsInsert = pm.getGeneratedKeys();
if(rsInsert != null && rsInsert.next()){
int count = rsInsert.getMetaData().getColumnCount();
Map<String,Object> map = new HashMap<>();
for(int i = 1;i <=count;i++)
{
Object value = rsInsert.getObject(i);
}
}
如何获取生成值的列名? 谢谢
如果您已经检查了使用rsInsert.getMetaData()
获得的ResultSetMetaData ,您可能已经看到了getColumnLabel(int) ,它将返回给定列号的建议名称。
// You are getting the Generated Keys here.
pm = connection.prepareStatement(strQuery,Statement.RETURN_GENERATED_KEYS);
pm.executeUpdate();
ResultSet rsInsert = pm.getGeneratedKeys(); // <-- This ResultSet is from the
// insert. Not a standard Query.
if(rsInsert != null && rsInsert.next()){
int count = rsInsert.getMetaData().getColumnCount();
Map<String,Object> map = new HashMap<>();
for(int i = 1;i <=count;i++)
{
String colName = rsInsert.getMetaData().getColumnLabel(i); // or ColumnName
Object value = rsInsert.getObject(i);
}
}
编辑
显然,如果您的JDBC驱动程序不遵循getGeneratedKeys中的Javadoc规范(“检索由于执行此Statement对象而创建的任何自动生成的键。如果此Statement对象未生成任何键,则返回空的ResultSet对象。 “)那么你的结果可能会有所不同。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.