2

ステートメントに単純な挿入を行いましたが、うまく機能していません。それが私に与えるエラーは

com.mysql.jdbc.exceptions.MySQLSyntaxErrorException:SQL構文にエラーがあります。'From、To、Message、Date、Read)VALUES(3,1、' iepa'、' 2012-10-16 16:26:42'の近くで使用する正しい構文については、MySQLサーバーのバージョンに対応するマニュアルを確認してください。 、0)'1行目

これは私のSQLのコードです。

   Connection conn = Connect.getConnection();
            try{
                Statement stmt = conn.createStatement();
                String sql = "INSERT INTO MESSAGE("
                        + "From,"
                        + "To,"
                        + "Message,"
                        + "Date,"
                        + "Read) "
                        + "VALUES(?,?,?,?,?)";
                PreparedStatement pstat = conn.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS);
                pstat.setInt(1, user.getId());
                pstat.setInt(2, Integer.parseInt(who.getText().toString()));
                pstat.setString(3, message.toString());
                pstat.setTimestamp(4, new Timestamp(new Date().getTime()));
                pstat.setInt(5, 0);
                pstat.executeUpdate();

ご覧のとおり、私は奇妙なことや難しいことは何もしていませんが、実行することはできません。

4

2 に答える 2

4

バックティックのようにMySQLで予約語をエスケープする必要がありますfrom

String sql = "INSERT INTO MESSAGE("
               + "`From`,"
               + "`To`,"
               + "Message,"
               + "Date,"
               + "`Read`) "
               + "VALUES(?,?,?,?,?)";
于 2012-10-16T16:43:26.270 に答える
3

FromReadおよびDateをSQLキーワードではない他の列名に変更します。MySQLで予約語のリストを検索

于 2012-10-16T16:47:11.337 に答える