Java MySQL语法错误不会消失

Java MySQL语法错误不会消失,java,mysql,Java,Mysql,我是MySQL新手,我正试图在Java代码中实现它。我想做的是根据记录是否已经存在来调用一个方法,并更新/插入数据库表 现在,我查看了StackOverflow和Goggle,根据我的发现,我需要确保在命令中删除值之间的空格,并且如果每个值的前缀和后缀都是一个'。然而,这似乎并没有解决问题。我仍然会收到一个错误,说您的SQL语法有错误;检查与MySQL服务器版本对应的手册,以了解第1行“”附近要使用的正确语法 我不知道这是为什么,因为我遵循的语法,我在教程网站和论坛上看到的,但它似乎仍然是不正确

我是MySQL新手,我正试图在Java代码中实现它。我想做的是根据记录是否已经存在来调用一个方法,并更新/插入数据库表

现在,我查看了StackOverflow和Goggle,根据我的发现,我需要确保在命令中删除值之间的空格,并且如果每个值的前缀和后缀都是一个'。然而,这似乎并没有解决问题。我仍然会收到一个错误,说您的SQL语法有错误;检查与MySQL服务器版本对应的手册,以了解第1行“”附近要使用的正确语法

我不知道这是为什么,因为我遵循的语法,我在教程网站和论坛上看到的,但它似乎仍然是不正确的。我知道这不是我的主机的问题,因为我可以连接和查询它很容易。这是我的密码:

                if (!syncedPlayers.contains(player)) {
                worked = database.command("INSERT INTO " +
                        TABLE_NAME + " " + UUID_FIELD + "," + CAPTURE_FIELD + "," + FFA_FIELD + "," + GEANT_FIELD + "," + QUIZZ_FIELD + "," + SURVIE_FIELD +
                        " VALUES ('" + player.toString() + "','" +
                        getScores(CAPTURE_FIELD, player, field, amount) + "','" +
                        getScores(FFA_FIELD, player, field, amount) + "','" +
                        getScores(GEANT_FIELD, player, field, amount) + "','" +
                        getScores(QUIZZ_FIELD, player, field, amount) + "','" +
                        getScores(SURVIE_FIELD, player, field, amount) + "'");
            } else {
                worked = database.command(
                        "UPDATE " + TABLE_NAME +
                                " SET " + field + " = '" + getScores(field, player, field, amount) +
                                "' WHERE " + UUID_FIELD + " = '" + player.toString() + "'");
            }
每个
getScores(,
总是返回一个整数值。因此,您可以想象它们只是35s、123或0等。我还使用了一个名为SpigotLib的SQL包装器,它简化了java SQL


我是SQL的新手,所以如果这个问题看起来这么简单,请不要生气。

您从未关闭过
值(

你的最后一行应该是

getScores(SURVIE_FIELD, player, field, amount) + "')");

INSERT
语句中的列名周围缺少
()
,在末尾缺少
。您的SQL是
INSERT-INTO-table col1,col2-VALUES(val2,val2
),但应该是
INSERT-INTO-table(col1,col2)VALUES(val2,val2)在尝试执行SQL语句之前,请考虑打印这些语句,这将有助于发现语法错误。<代码>简化了java SQL  > -您的代码是简单的一切。您可以查看准备好的语句,它们会使代码更加清晰,SQL更安全。同意@反斜杠:您应该使用“COD”。e> PreparedStatement
参数标记,以防止黑客窃取您的数据和删除您的表的攻击。这是在JDBC中构造SQL请求的错误方法。您应该使用PreparedStatement。它将为您正确转义字符串和日期,绑定变量,并防止SQL注入。