2013-11-21 139 views
0

我在Oracle中編寫了一個插入一些值的簡單SQL查詢。java.sql.SQLSyntaxErrorException:ORA-00936:缺少表達式

但是我得到了SQLSyntaxErrorException,指出「缺少表達式」錯誤。

這是我的查詢:

String addManager = "INSERT INTO property_manager(EIN,NAME,HOME_PHONENUMBER,MOBILE_PHONENUMBER,EMAIL,PROPERTY_CIN)" + 
     "VALUES (" + mein.getText() + "," + mname.getText() +","+ mHome_phonenumber.getText() +","+ MMobile_phonenumber.getText()+"," + memail.getText() + ","+mproperty_cin.getText()+")"; 

回答

1

你應該把引號內的值。

String addManager = "INSERT INTO property_manager(EIN,NAME,HOME_PHONENUMBER,MOBILE_PHONENUMBER,EMAIL,PROPERTY_CIN)" + 
    "VALUES ('" + mein.getText() + "','" + mname.getText() +"','"+ mHome_phonenumber.getText() +"','"+ MMobile_phonenumber.getText()+"','" + memail.getText() + "','"+mproperty_cin.getText()+"')"; 

或者更好的是,使用參數。否則你冒着SQL注入攻擊的風險。

+0

如何把我的價值觀內引號可以爲我寫?謝謝 – user3019128

2

最好的解決辦法是使用java.sql.PreparedStatement

  • 它可以防止SQL注入
  • 逃逸無效字符在您的字符串(如')和這將打破您的查詢
  • 處理空和空字符串
  • 使用Oracle的查詢解析緩存中的字符(更好的性能)
  • 把手類型,如日期和斑點更容易

不僅僅是谷歌爲java PreparedStatemnt,你看到很多樣品。