2016-11-18 50 views
2
String addQuer = "INSERT INTO emaildata VALUES('" + email + "','" + fname + "','" + lname + "','" + subject + "','" + content + "')"; 
     statement.execute(addQuer); 

我有上面的代码插入数据到表中。我正在使用MS Access数据库。所有字段都是类型(长文本)。查询工作正常,当我插入下面的数据集插入文本失败的一些字符串值,但不为其他人

  1. 电子邮件= SALMAN马吉德
  2. 萨尔曼
  3. 马吉德
  4. 测试邮件
  5. 我的名字是萨尔曼。

但是,当我在最后一个字段中使用以下数据集时,相同的查询会发生错误。错误是语法错误缺少运算符....请不要介意这样长的文本,因为这个文本给出了错误,所以我发布了整个文本。

java.sql.SQLException: [Microsoft][ODBC Microsoft Access Driver] Syntax error (missing operator) in query expression ''Get the free Outlook app. 

我们升级了Outlook应用,以更快和更容易使用。无论您使用哪种电子邮件服务'。

  1. “Outlook.com”
  2. 不可用
  3. 不可用
  4. 立即下载:Outlook应用
  5. 获取免费的Outlook应用。

    我们已经升级了Outlook应用程序,以便更快速和更易于使用。无论您使用哪种电子邮件服务,Outlook应用程序都可以让您做更多。

[下载观。] http://communication.microsoft.com/Key-6859501.C.ChVBd.C.K4.-.HJ67kt

场5在这里结束。上面的文字很长,但我无法粘贴整个文本。但错误是在我发布的这个文本中。

回答

4

您患有“SQL注入”问题。包含单引号的文本(例如,“我们...”)将导致您的SQL命令无效。你需要使用一个参数化查询,这将是这个样子:

String addQuer = "INSERT INTO emaildata VALUES (?,?,?,?,?)"; 
PreparedStatement ps = conn.prepareStatement(addQuer); 
ps.setString(1, email); 
ps.setString(2, fname); 
ps.setString(3, lname); 
ps.setString(4, subject); 
ps.setString(5, content); 
ps.executeUpdate(); 
+0

谢谢@Gord,这解决了我的问题。你是个好人。非常感谢你。 –

相关问题