我要做的是将数据插入到这个表中,如果主键(entity_id)存在,则更新记录。但是我遇到了SQL语法的问题。当我想在 'VALUES' 后面添加更多参数时,它不允许我这样做,因此我会得到以下错误:
参数索引超出范围(7 > 参数数目,即 6)。
int insertOrUpdateSuccess = MyDBSyncher.UPDATE("INSERT INTO " + DB_NAME + ".entities " +
"(`entity_id`, `wai_type`, `wai_id`, `character_id`, `looted`, `creation_time`) " +
"VALUES ((?), (?), (?), (?), (?), (?)) " +
"ON DUPLICATE KEY UPDATE " +
"`wai_type`='(?)', `wai_id`='(?)', `character_id`='(?)', `looted`='(?)'",
new String[]{tmpEntityId, values[0], values[1], values[2], values[3], values[4],
values[0], values[1], values[2], values[3]});
这里有一个类似的问题 (链接),但我无法根据我的需求进行解释。很抱歉可能会发布重复内容。
这是我代码中的UPDATE()函数:
public static int UPDATE(String updateStatement, String[] params){
try {
if(!conn.isClosed()) {
logger.trace("Successfully connected to MySQL server using TCP/IP - " + conn);
stat = conn.prepareStatement(updateStatement);
for (int i = 0; i < params.length; i++){
stat.setString(i+1, params[i]);
}
return stat.executeUpdate();
}
} catch(SQLException eSQL) {
logger.fatal(eSQL.getMessage());
}
return -1;
}
感谢您对此的任何帮助。 :)
?
周围加上'
引号,我注意到这是你在前六个参数后面所拥有的。也许这就是问题所在。 - Sotirios Delimanolis