【问题标题】:Inserting text fails for some string values but not for others对于某些字符串值,插入文本失败,但对于其他字符串值则不然
【发布时间】:2016-11-18 20:42:03
【问题描述】:
String addQuer = "INSERT INTO emaildata VALUES('" + email + "','" + fname + "','" + lname + "','" + subject + "','" + content + "')";
        statement.execute(addQuer);

我有将数据插入表的上述代码。我正在使用 MS Access 数据库。所有字段都是类型(长文本)。当我插入以下数据集时,查询工作正常

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

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

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 应用都能让您做得更多。

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

第 5 场到此结束。上面的文字很长,但我无法粘贴整个文字。但错误出现在我发布的这段文字中。

【问题讨论】:

    标签: java database ms-access jdbc odbc


    【解决方案1】:

    您遇到了“SQL 注入”问题。包含单引号的文本(例如,“We'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();
    

    【讨论】:

    • 谢谢@Gord,这解决了我的问题。你是个好人。非常感谢。
    猜你喜欢
    • 2017-03-25
    • 2013-03-13
    • 1970-01-01
    • 1970-01-01
    • 2023-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-11
    相关资源
    最近更新 更多