将rawQuery更新到数据库不能在android上运行

时间:2015-01-09 07:02:27

标签: android database sqlite android-sqlite updates

在我的项目中,我使用此查询更新数据库中的搜索标签

      public void updatesearchtag(){
        SQLiteDBHelper sqLiteDBHelper = new SQLiteDBHelper(context.getApplicationContext());
        Cursor crs=sqLiteDBHelper.getWritableDatabase().rawQuery("update shoply_coupon set searchTag=(Select SearchTag from shoply_retailer_master where retailerId=shoply_coupon.retailerID)",null);
//Cursor crs=sqLiteDBHelper.getWritableDatabase().execSQL("update shoply_coupon set searchTag=(Select SearchTag from shoply_retailer_master where retailerId=shoply_coupon.retailerID)");
}

但是查询不起作用我可能知道我在这里做了什么错误

3 个答案:

答案 0 :(得分:1)

使用execSQL()而不是rawQuery()这样的SQL。

rawQuery()只编译SQL但不运行它。它仅在移动光标时运行。 execSQL()编译并运行SQL。

此外,请使用getWritableDatabase()而不是getReadableDatabase()进行更新。

答案 1 :(得分:0)

分享您正在使用的代码进行更新。还有关于SearchTag值。

我建议在代码中使用Dbclass分隔并使用这样的函数。这是一个简单的方法来做所有事情,如更新,删除,选择等

public boolean Update(String SearchTag , ContentValues values) 
{
    if (db.update(TABLE, values, "SearchTag = '"+YourValue+"'", null) > 0)
    {
    return true ;   
    }
    return false ;
}

答案 2 :(得分:0)

使用

sqLiteDBHelper.getWritableDatabase()

代替

sqLiteDBHelper.getReadableDatabase()

因为您正在尝试写入处于写入防止模式的数据库。