String addQuer = "INSERT INTO emaildata VALUES('" + email + "','" + fname + "','" + lname + "','" + subject + "','" + content + "')";
statement.execute(addQuer);
我有上面的代码将数据插入表中。我正在使用MS Access数据库。所有字段都是类型(长文本)。插入以下数据集时,查询正常工作
但是当我在最后一个字段中使用以下数据集时,同样的查询会出错。错误是语法错误缺少操作员....请不要介意这么长的文本,因为这个文本给出了错误所以我发布了整个文本。
java.sql.SQLException: [Microsoft][ODBC Microsoft Access Driver] Syntax error (missing operator) in query expression ''Get the free Outlook app.
我们已将Outlook应用升级为更快,更易于使用。无论您使用哪种电子邮件服务'。
获取免费的Outlook应用。
我们已将Outlook应用升级为更快,更易于使用。无论您使用哪种电子邮件服务,Outlook应用程序都可以让您做得更多。
[下载Outlook。] http://communication.microsoft.com/Key-6859501.C.ChVBd.C.K4.-.HJ67kt
字段5在这里结束。上面的文字很长但我无法粘贴整个文本。但错误发生在我发布的这篇文章中。
答案 0 :(得分:4)
您正在遭受" SQL注入"问题。包含单引号的文本(例如,"我们' ve ...")将导致您的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();