我尝试了以下SQLite查询:
int idServizo = 150;
String whereClause = id_servizio+" = '"+idServizio+" ' ";
ContentValues cv = new ContentValues();
cv.put("sync", 1);
int r = dbManager.updateTable("myTable", cv, whereClause);
Run Code Online (Sandbox Code Playgroud)
字段sync和id_servizio都是整数.updateTable方法是:
public int updateTable(String table, ContentValues values, String whereClause){
int r = mDb.update(table, values, whereClause, null);
return r;
}
// mDb is SQLiteDatabase object
Run Code Online (Sandbox Code Playgroud)
这一切都很好.但是如果我用rawQuery()方法尝试这个:
public Cursor RawQuery(String sqlQuery, String[] columns){
return mDb.rawQuery(sqlQuery, columns);
}
Run Code Online (Sandbox Code Playgroud)
表格未更新!即使没有发生错误.
int idServizo = 150;
String updateQuery ="UPDATE myTable SET sync = 1 WHERE id_servizio = "+idServizio;
dbManager.RawQuery(updateQuery, null);
Run Code Online (Sandbox Code Playgroud)
为什么这不起作用?
DUD*_*MXP 35
这是因为当执行rawQuery时会返回游标.如果没有调用cursor.moveToFirst()
和cursor.close()
数据库不会得到更新.
int idServizo = 150;``
String updateQuery ="UPDATE myTable SET sync = 1 WHERE id_servizio = "+idServizio;
Cursor c= dbManager.RawQuery(updateQuery, null);
c.moveToFirst();
c.close();
Run Code Online (Sandbox Code Playgroud)
我不知道需要调用moveToFirst(),但这工作正常,数据库得到更新.
问题解决了.
http://developer.android.com/reference/android/database/sqlite/SQLiteDatabase.html
无法工作,因为rawQuery
运行提供的SQL并返回Cursor
结果集.
如果我想要退回一张桌子,我必须使用rawQuery
,否则不!
归档时间: |
|
查看次数: |
14390 次 |
最近记录: |