Java 如果没有插入mysql条目';t exist,如果确实存在,则进行更新

Java 如果没有插入mysql条目';t exist,如果确实存在,则进行更新,java,mysql,Java,Mysql,我想插入一个条目,如果它不存在,否则更新条目,我不能使用重复密钥更新,我对语法感到困惑。所以我试着这样做: final String QUERY = "REPLACE INTO skills SET VALUES (" + insert(player) + ") WHERE playername = '" + player.getUsername() + "'"; statement.execute(QUERY); statement.close(); conn

我想插入一个条目,如果它不存在,否则更新条目,我不能使用重复密钥更新,我对语法感到困惑。所以我试着这样做:

    final String QUERY = "REPLACE INTO skills SET VALUES (" + insert(player) + ") WHERE playername = '" + player.getUsername() + "'";
    statement.execute(QUERY);

    statement.close();
    connection.close();
}

private static String insert(Player player) {
    String stringToReturn = "'" + player.getUsername() + "',";
    for (int index = 0; index < 25; index++) {
        stringToReturn += player.getSkills().getLevels()[index] + "," + ((int) player.getSkills().getXp()[index]) + ",";
    }
    stringToReturn = stringToReturn.substring(0, stringToReturn.length() - 1);
    return stringToReturn;
}
final String QUERY=“替换为技能集值(“+insert(player)+”),其中playername='“+player.getUsername()+”;
语句。执行(查询);
语句。close();
connection.close();
}
专用静态字符串插入(播放器){
字符串stringToReturn=“”+player.getUsername()+”,“;
对于(int-index=0;index<25;index++){
stringToReturn++=player.getSkills().getLevels()[index]+“,”+((int)player.getSkills().getXp()[index])+“,”;
}
stringToReturn=stringToReturn.substring(0,stringToReturn.length()-1);
返回字符串返回;
}
但这是不正确的语法,所以我想知道如何才能做到这一点


playername是主键

我认为对重复键更新工作的正确语法是:

"INSERT INTO skills (playerName, otherColumn) 
    VALUES ('" + player.getUsername() + "', '" + insert(player) +"')
 ON DUPLICATE KEY UPDATE otherColumn = VALUES(otherColumn)";

UPDATE
而不是
REPLACE
…?不,因为这样它就不会在条目不存在时插入条目?向我们展示您的表结构“我无法在重复键更新时使用,我对语法感到困惑”-那么您为什么不提出关于如何修复该命令语法的问题?谢谢,otherColumn是什么意思?我真的不熟悉MySQL语法:(例如,insert函数包含所有不同列的所有值。您可以对insert说您要插入的列是什么。在您的情况下,您将两个列n传递给了REPLACE。因为我不知道另一列的名称,所以将其称为otherColumn。您必须将其更改为其中的列的名称您想插入“插入(玩家)” value@user1009569.现在我看到了你的模式,如果你想为所有这些字段插入并更新所有这些字段,你必须为此编写一个大的查询,但是只要你在其中有playerName,思考过程是一样的。insert方法返回一个字符串,其中包含每列的每个值。因此,值应该只有0括号中的ne值,为什么我使用INSERT INTO table Values(2、3、6、34、5、96)时会插入所有这些值?