我通过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);
}
}
如何获取生成值的列名? 感谢
答案 0 :(得分:3)
如果您检查了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对象。“)然后您的结果可能会有所不同。