I am trying to update one column for any number of rows.
Here is the function:
public void setAwardsSyncComplete(String[] ids) {
String inArray = StringUtils.separateCommas(ids);
db.beginTransaction();
try {
ContentValues contentValues = new ContentValues();
contentValues.put(COL_SYNCED, true);
int rowsAffected = db.update(TABLE, contentValues, COL_ID + " IN (" + inArray + ")", null);
} catch (Exception e) {
DebugLog.e("Error in transaction", e.toString());
} finally {
db.endTransaction();
}
}
What is strange is that the rowsAffected returns correctly (i.e. rowsAffected > 0), but the column values remain null.
Am I overlooking somethi开发者_如何学Pythonng very simple here?
Thanks.
As you're using transactions, you need to call db.setTransactionSuccessful(); at the end of the try clause. Without this, the update gets rolled back.
See SQLiteDatabase.beginTransaction
Hope this helps,
Phil Lello
You need to call db.setTransactionSuccussful()
after db.update
otherwise any changes will be rolled back when you call endTransaction()
.
there's no explicit boolean type in sqlite tables? what data type is the COL_SYNED column you are trying to update?
and you will need to call db.setTransactionSuccussful()
I think there is a problem on your update..
You need to loop your array and update each one by one..
private int _rowsAffected;
foreach (var a in inArray)
{
_rowsAffected= db.update(TABLE, contentValues, COL_ID + " = (" + a +")", null);
}
db.Commit();
db.setTransactionSuccussful();
if(_rowsAffected > 0)
//Success
Regards
精彩评论