这是我想要做的。如果主键(entity_id)存在,我想插入该表或更新记录。我只是遇到了 SQL 语法的问题。它不会让我拥有比第一个“值”数量更多的参数,所以我收到以下错误:
参数索引超出范围(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;
}
感谢您对此的任何帮助。:)