我在DB2数据库(版本10.1)中插入带有jdbc的行时返回生成的密钥时出现问题。我尝试了几种方法,但没有人工作正常。
方法1:
stmt = con.prepareStatement(query, Statement.RETURN_GENERATED_KEYS);
执行此行时,我收到此异常:
com.ibm.db2.jcc.am.SqlSyntaxErrorException:ILLEGAL SYMBOL""。一些可能是法律的符号是: SQLCODE = -104,SQLSTATE = 42601,DRIVER = 3.61.75
方法2:
stmt = con.prepareStatement(query, pkMapper.getPkFieldNames());
List<Object> params = getInsertParams(object, pkMapper);
for (int i = 0; i < params.size(); i++) {
Object param = params.get(i);
stmt.setObject(i+1, param);
}
pkMapper.getPkFieldNames()
返回带有PK列名称的字符串数组。执行stmt.setObject(i+1, param);
时,我得到这样的例外:
com.ibm.db2.jcc.am.SqlSyntaxErrorException:ILLEGAL SYMBOL&#34;&#34;。一些可能是法律的符号是: SQLCODE = -104,SQLSTATE = 42601,DRIVER = 3.61.75
方法3:
stmt = con.prepareStatement(query);
使用此表单,插入执行正常,但不会返回stmt.getGeneratedKeys();
有没有人知道发生了什么?