user2113404
user2113404

Reputation: 13

Error in SQL syntax using Java

public boolean setgame(int botid, int gameid, String name, String ip, int spoofed, int reserved, int loadingtime, int left, String leftreason, int team, int colour, String spoofedrealm) {
    try {
        Connection connection = connection();
        PreparedStatement statement = connection.prepareStatement("INSERT INTO gameplayers (id, botid, gameid, name, ip, spoofed, reserved, loadingtime, left, leftreason, team, colour, spoofedrealm) VALUES (NULL, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)");
        statement.setInt(1, botid);
        statement.setInt(2, gameid);
        statement.setString(3, name);
        statement.setString(4, ip);
        statement.setInt(5, spoofed);
        statement.setInt(6, reserved);
        statement.setInt(7, loadingtime);
        statement.setInt(8, left);
        statement.setString(9, leftreason);
        statement.setInt(10, team);
        statement.setInt(11, colour);
        statement.setString(12, spoofedrealm);
        statement.execute();
        connectionReady(connection);
        return true;
    } catch (SQLException e) {
        if (Main.DEBUG) {
        }
        Main.println("[SQLThread] Unable to add bot ban to MySQL database: " + e.getLocalizedMessage());
    }
    return false;
}

I created a main method to add all data and I can't see any error in the insert statement.

I am getting this error:

[SQLThread] Fail: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'left, leftreason, team, colour, spoofedrealm) VALUES (NULL, 2, 146, 'Teste', '120.32' at line 1

Upvotes: 1

Views: 78

Answers (2)

Sergey Kalinichenko
Sergey Kalinichenko

Reputation: 727077

LEFT is reserved word in MySql (as in LEFT OUTER JOIN...). You need to use quotes around it to use it as an identifier.

Better yet, consider renaming the field to not use a reserved word as an identifier.

Upvotes: 1

guido
guido

Reputation: 19224

LEFT is a reserved word in MySQL; you have to escape it:

INSERT INTO gameplayers (
     id, botid, gameid, name, ip, spoofed, reserved, loadingtime, `left`, ...
                                                        ----------^----^

Upvotes: 1

Related Questions