应用程序在运行SQL查询时获得强制关闭

时间:2010-12-15 10:07:43

标签: android sqlite

我根据my earlier question中的建议在我的SQL查询中的“WHERE”之后添加了一个空格 但是,现在我的应用程序获得了“强制关闭”。

Cursor c = db.rawQuery("SELECT * FROM  sharelist  WHERE " + "category" + "=" + category,null);

2 个答案:

答案 0 :(得分:1)

你应该创建这样的查询:

Cursor c = db.rawQuery("SELECT * FROM  sharelist  WHERE category=?", 
                       new String[] {category});

这将为您正确引用并避免SQL注入攻击。

此外,每当您看到强制关闭时,都会出现与其关联的未处理异常。您可以在LogCat中看到它(这在Eclipse的Debug透视图中可用)。 Exception的类型和消息是调试错误的宝贵信息。

答案 1 :(得分:0)

您应该按照kgiannakakis的建议进行查询。

对于您的问题,您必须使用单引号括起category值,例如:

Cursor c = db.rawQuery( "SELECT * FROM  sharelist  WHERE "  + "category" + "='" + category + "'",null);