这是我得到的错误:
**ERROR/Database(13775): Failure 1 (near "s": syntax error)**
当我尝试执行以下查询时:
myDB.execSQL("INSERT INTO " + tableName + " (" + column[1] + "," + column[2] + "," + column[3] + "," + column[4] + ","
+ column[5] + "," + column[6] + "," + column[7] + "," + column[8] + ",type ) VALUES('" + url + "','" + title + "','" + summary + "','" + imageUrl + "','" + completeStoryUrl + "','" + date + "','" + imageString + "','" + body + "','" + type + "')");
通过解析具有像对象这样的RSS提要的xml,将这些值存储在Db中。存储的项目很少,但在某些项目上我得到了这个例外。是否存在查询被发送到查询的数据的问题.. ???任何帮助表示赞赏。
答案 0 :(得分:1)
您应该从不使用字符串操作创建SQL命令,因为存在SQL注入的危险。有一些方法可以使用参数安全地格式化命令。
在Java中,有java.sql.PreparedStatement
类。
使用这种传统方法也应该修复语法错误。
答案 1 :(得分:0)
在没有看到正在执行的实际查询的情况下,我猜测其中一个正在插入的字段包含一个“字符,它正在破坏SQL语句。
例如,假设摘要的值是
This string need"s to be escaped
正如Michalis所说,你需要逃避插入的值(替换任何特殊字符)
如果我是你,我会记录正在执行的实际字符串查询。然后看一下logcat吧,你应该知道它失败的原因。