运行Sqlite查询时出现异常!

时间:2011-07-19 10:39:18

标签: android sqlite

这是我得到的错误:

 **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中。存储的项目很少,但在某些项目上我得到了这个例外。是否存在查询被发送到查询的数据的问题.. ???任何帮助表示赞赏。

2 个答案:

答案 0 :(得分:1)

您应该从不使用字符串操作创建SQL命令,因为存在SQL注入的危险。有一些方法可以使用参数安全地格式化命令。

在Java中,有java.sql.PreparedStatement类。

使用这种传统方法也应该修复语法错误。

答案 1 :(得分:0)

在没有看到正在执行的实际查询的情况下,我猜测其中一个正在插入的字段包含一个“字符,它正在破坏SQL语句。

例如,假设摘要的值是

This string need"s to be escaped 

正如Michalis所说,你需要逃避插入的值(替换任何特殊字符)

如果我是你,我会记录正在执行的实际字符串查询。然后看一下logcat吧,你应该知道它失败的原因。

相关问题