【问题标题】:Why am I getting a java.sql.SQLException near "@" in my JDBC SQLite database?为什么我的 JDBC SQLite 数据库中的“@”附近出现 java.sql.SQLException?
【发布时间】:2020-10-06 05:02:20
【问题描述】:

我正在尝试更新我的 SQLite 数据库中的值。我的代码如下:

                   for(Cookie ck:cookie) {
                        if (ck.getName().equals("email")) {
                            s=ck.getValue();
                            System.out.println(s);
                            for(Cookie ce:cookie) {
                                if(ce.getName().equals("name")) {
                                    System.out.println(ce.getValue());
                                    i=PS.executeUpdate("UPDATE Details "+"SET name="+ce.getValue()+" WHERE email="+s);
                                }
                                else if (ce.getName().equals("age")) {
                                    System.out.println(ce.getValue());
                                    i=PS.executeUpdate("UPDATE Details "+"SET age="+ce.getValue()+" WHERE email="+s);
                                }
                            }
                            break;
                        }
                        
                    }

在这里,我尝试在 Cookies 的帮助下获取 nameageemail,并在数据库。然后当我输入输入时,我收到此错误(假设电子邮件是:abc@gmail.com):

java.sql.SQLException: near "@gmail": syntax error
    at org.sqlite.NativeDB.throwex(NativeDB.java:210)
    at org.sqlite.NativeDB._exec(Native Method)
    at org.sqlite.Stmt.executeUpdate(Stmt.java:152)
    at abhishek.Modify.doGet(Modify.java:44)...

【问题讨论】:

  • 您不应将值连接到查询字符串中。而是参数化您的语句,并使用准备好的语句,在语句对象上设置值,然后执行。

标签: java sqlite jdbc sql-update


【解决方案1】:

您必须在 sql 中的字符串周围添加单引号。

i=PS.executeUpdate("UPDATE Details "+"SET name='"+ce.getValue()+"' WHERE email='"+s+"'");
...
i=PS.executeUpdate("UPDATE Details "+"SET age="+ce.getValue()+" WHERE email='"+s+"'")

顺便了解一下prepared statements以防止sql注入

【讨论】:

    猜你喜欢
    • 2012-06-23
    • 2011-01-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-23
    • 2013-06-30
    • 2021-05-23
    • 2020-06-09
    相关资源
    最近更新 更多