I have a method which should upgrade the unreadMessageCount of a given user.
public void increaseUnreadMessageCount(int userID) {
String query = "UPDATE " + tableName + " SET " + DatabaseHelper.KEY_USER_UNREAD_MESSAGE_COUNT + " = "
+ DatabaseHelper.KEY_USER_UNREAD_MESSAGE_COUNT + " + 1 WHERE " + DatabaseHelper.KEY_USER_USER_ID
+ " = ?";
Log.i("query", query);
db.rawQuery(query, new String[] { String.valueOf(userID) });
}
This evaluates to: UPDATE user SET unreadPrivateMessageCount = unreadPrivateMessageCount + 1 WHERE userID = ? which seems correct to me.
But somehow it is not working, the row is always 0.
Or is my SELECT statement wrong?
public int getUnreadPrivateMessageCount() {
String query = "SELECT SUM(" + DatabaseHelper.KEY_USER_UNREAD_MESSAGE_COUNT + ") AS messageCount FROM "
+ tableName + " WHERE " + DatabaseHelper.KEY_USER_UNREAD_MESSAGE_COUNT + " <> ?";
Log.i("query", query);
Cursor cursor = db.rawQuery(query, new String[] { "0" });
int messageCount = 0;
if (cursor.getCount() > 0) {
if (cursor.moveToFirst()) {
messageCount = cursor.getInt(cursor.getColumnIndexOrThrow("messageCount"));
cursor.close();
} else {
Log.e("getUnreadPrivateMessageCount", "moveToFirst failed");
}
} else {
Log.e("getUnreadPrivateMessageCount", "count 0");
}
return messageCount;
}
This query evaluates to SELECT SUM(unreadPrivateMessageCount) AS messageCount FROM user WHERE unreadPrivateMessageCount <> ? and no error log is triggered, which also seems correct to me.