2012-09-30 106 views
0

我試圖按照以下方式將一個元組插入到mySQL數據庫中。JDBC數據庫訪問,插入tupple

String insertString = "INSERT INTO listings(Seller, Title, Close_Time, Price, Condition)" 
       + " VALUES('"+par.getSellerName()+"', '"+par.getItemName()+"', " 
       +closetime+", "+par.getPrice()+", '"+par.getCondition()+"')"; 

pst = con.prepareStatement(insertString); 
pst.executeUpdate(); 
ResultSet rs = pst.getGeneratedKeys(); 

但我不斷收到SQL語法錯誤。奇怪的是,如果我離開條件,我沒有問題。在清單表條件是一個varchar(45)和par.getCondition()返回一個字符串長度< 45.

我試圖這也喜歡:

pst = con.prepareStatement(
        "INSERT INTO listings(Seller, Title, Close_Time, Price, Condition)" 
        + "VALUES(?,?,?,?,?)", Statement.RETURN_GENERATED_KEYS); 
pst.setString(1, par.getSellerName()); 
     pst.setString(2, par.getItemName()); 
     long closeTime = getTimeMills(par.getTimeOver()); 
     pst.setLong(3, closeTime); 
     pst.setDouble(4, par.getPrice()); 
     pst.setString(5, par.getCondition()); 
     pst = con.prepareStatement(insertString); 
     pst.executeUpdate(); 
     ResultSet rs = pst.getGeneratedKeys(); 

具有相同的結果。我相信我一定在做一些愚蠢的事情,但我完全失敗。在執行插入操作之前,我已經打印出字符串,並且無法找到任何語法錯誤。任何幫助將不勝感激。

回答

1

條件是在MySQL中的保留字:看Reserved words for mysql

只需重命名的財產,它會執行罰款

+0

在他/她的查詢中,OP不能像設置[[Condition]一樣嗎?就我個人而言,我以前沒有遇到類似的問題。 –

+0

我可以吻你。 – Wcrousse

1

擴大對當前的答案,因爲「條件」是列名,以及在改性表可能不是一個選項,你可以通過在你的查詢中引用條件來獲得 - 帶有反引號或引號字符,如前面引用的文檔中所述。

折衷是你失去了可移植性,因爲不是每個數據庫都使用這個約定。如果可能的話,重命名該列是最好的長期選項。