ich diesen SQLite Tisch in meinem Android-Anwendung haben:Die Anzahl der geänderten Zeilen (rows affected) ist immer 1 mit SQLite (Android)
CREATE TABLE " + TABLE_NAME + " (" +
_ID + " INTEGER PRIMARY KEY AUTOINCREMENT" +
COMMA + COLUMN_NAME_SID + " INTEGER" +
COMMA + COLUMN_NAME_TITLE + " TEXT NOT NULL" +
COMMA + COLUMN_NAME_IS_MINE + " BOOLEAN NOT NULL" +
COMMA + COLUMN_NAME_CREATED_AT + " DATETIME" +
COMMA + COLUMN_NAME_CODE + " TEXT UNIQUE" +
COMMA + COLUMN_NAME_MSG + " INTEGER NOT NULL DEFAULT 0" +
");";
Wenn ich einen Datensatz mit den gleichen Daten aktualisieren, die Anzahl der geänderten Zeilen (rows affected) ist immer 1.
SQLiteDatabase db = m_helper.getWritableDatabase();
String where = COLUMN_NAME_SID + "=" + sid;
ContentValues values = new ContentValues();
values.put(COLUMN_NAME_MSG, msg);
int rowsAffected = db.update(TABLE_NAME, values, where, null);
db.close();
// rowsAffected is always 1!
In anderen DBMS (wie Mysql), wenn ich ein Update mit den gleichen Daten auf einem bestimmten Datensatz, die Anzahl der geänderten Zeilen durchzuführen ist 0. In SQLite auf Android ist anders?
Vielleicht erkennt es einfach nicht, ob diese Daten * tatsächlich * geändert worden sind. Jede Abfrage wird als Änderung gezählt, auch wenn die Daten identisch sind. – Vucko
Ich denke auch, aber es ist seltsam. Andere DBMS (wie MySQL) geben Null zurück, wenn sich die Daten nicht ändern. – Alex