2012-10-16 54 views
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(); 

正如你所看到的,我並沒有做任何奇怪的事情或如此困難,但我無法運行它。

+0

[由於在MySQL中使用保留字作爲表或列名稱而導致的語法錯誤]的可能重複(http://stackoverflow.com/questions/23446377/syntax-error-due-to-使用一個保留字作爲一個表或列名稱在MySQL中) –

回答

4

你需要逃避reserved words in MySQLfrom與反引號

String sql = "INSERT INTO MESSAGE(" 
       + "`From`," 
       + "`To`," 
       + "Message," 
       + "Date," 
       + "`Read`) " 
       + "VALUES(?,?,?,?,?)"; 
+0

+1好抓。 – Dave