2013-11-21 74 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,你看到很多样品。