Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Update table using rawQuery() method does not work

Tags:

android

sqlite

I tried the following SQLite query:

    int idServizo = 150;
    String whereClause = id_servizio+" = '"+idServizio+" ' ";
    ContentValues cv = new ContentValues();
    cv.put("sync", 1);

    int r = dbManager.updateTable("myTable", cv, whereClause);

Where fields sync and id_servizio are both integer. The method updateTable is:

 public int updateTable(String table, ContentValues values, String whereClause){
    int r = mDb.update(table, values, whereClause, null);
    return r;
}

 // mDb is SQLiteDatabase object

All this works good. But if I try this with the rawQuery() method:

 public Cursor RawQuery(String sqlQuery, String[] columns){
    return mDb.rawQuery(sqlQuery, columns);    
}

The table is not updated! even if no error occurs.

 int idServizo = 150;
 String updateQuery ="UPDATE myTable SET sync = 1 WHERE id_servizio = "+idServizio;
 dbManager.RawQuery(updateQuery, null);

Why does this not work?

like image 541
GVillani82 Avatar asked Oct 24 '12 10:10

GVillani82


1 Answers

This is because when a rawQuery is executed cursor is returned. Without the call to cursor.moveToFirst() and cursor.close() the database won't get updated.

int idServizo = 150;
String updateQuery ="UPDATE myTable SET sync = 1 WHERE id_servizio = "+idServizio;
Cursor c= dbManager.rawQuery(updateQuery, null);

c.moveToFirst();
c.close();

I dont know the need to call moveToFirst() but this works fine and the database gets updated.

like image 104
DUDE_MXP Avatar answered Oct 21 '22 13:10

DUDE_MXP