为啥我的 JDBC SQLite 数据库中的“@”附近出现 java.sql.SQLException?
Posted
技术标签:
【中文标题】为啥我的 JDBC SQLite 数据库中的“@”附近出现 java.sql.SQLException?【英文标题】: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
的帮助下获取 name、age 和 email,并在数据库。然后当我输入输入时,我收到此错误(假设电子邮件是: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)...
【问题讨论】:
您不应将值连接到查询字符串中。而是参数化您的语句,并使用准备好的语句,在语句对象上设置值,然后执行。 【参考方案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注入
【讨论】:
以上是关于为啥我的 JDBC SQLite 数据库中的“@”附近出现 java.sql.SQLException?的主要内容,如果未能解决你的问题,请参考以下文章
为啥我的 sqlite 数据库中的 rawquery 给了我错误的人?
流行错误-apache netbeans 11.2中的org.sqlite.JDBC [重复]