2

我做了一个简单的插入语句,但效果不佳。它给我的错误是

com.mysql.jdbc.exceptions.MySQLSyntaxErrorException:您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以获取正确的语法,以便在 'From, To, Message, Date, Read) VALUES (3,1,'iepa','2012-10-16 16:26:42' 附近使用,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

From将,Read和更改Date为不是 SQL 关键字的任何其他列名。在 MySQL 中查找保留字列表

于 2012-10-16T16:47:11.337 回答