SQLiteDatabaseを更新しようとしていますが、何らかの理由での更新が常に失敗し、0(行が更新されます)が返されます。Android SQLiteDatabase WHERE文が壊れて更新
削除した場合文字列の選択= null;、すべての行が更新されますが、行を更新したいだけですどこに?と私はeIdを提供します。 ContentValuesの値はすべて正しく、nullではありません。今、私の脳を何時間も動かしています。これで目の新鮮なセットが役立つでしょう、事前に感謝!
注:propertyItemはOKで、私のフォームから来るすべての値が正しいです。選択変数を使用すると、問題が更新時に破損します。
/// COLUMN_NAME_EID == "eId"
public int updatePropertyItem (PropertyItem propertyItem) {
SQLiteDatabase db = mDbHelper.getWritableDatabase();
ContentValues values = new ContentValues();
if (propertyItem.title != null)values.put(DatabaseContract.DataEntry.COLUMN_NAME_TITLE, propertyItem.title);
if (propertyItem.category != null) values.put(DatabaseContract.DataEntry.COLUMN_NAME_CATEGORY, propertyItem.category);
if (propertyItem.serial != null) values.put(DatabaseContract.DataEntry.COLUMN_NAME_SERIAL, propertyItem.serial);
if (propertyItem.note != null) values.put(DatabaseContract.DataEntry.COLUMN_NAME_NOTE, propertyItem.note);
if (propertyItem.purchaseDate != null) values.put(DatabaseContract.DataEntry.COLUMN_NAME_PURCHASE_DATE, propertyItem.purchaseDate);
if (propertyItem.currentValue != null) values.put(DatabaseContract.DataEntry.COLUMN_NAME_CURRENT_VALUE, propertyItem.currentValue);
if (propertyItem.replacementValue != null) values.put(DatabaseContract.DataEntry.COLUMN_NAME_REPLACE_VALUE, propertyItem.replacementValue);
if (propertyItem.store != null) values.put(DatabaseContract.DataEntry.COLUMN_NAME_STORE, propertyItem.store);
values.put(DatabaseContract.DataEntry.COLUMN_NAME_WARRANTY, propertyItem.warranty);
values.put(DatabaseContract.DataEntry.COLUMN_NAME_FAVORITE, propertyItem.favorite);
String selection = DatabaseContract.DataEntry.COLUMN_NAME_EID + " = ? ";
String[] selectionArgs = new String[] { String.valueOf(propertyItem.eId) };
int rowsUpdated = db.update(DatabaseContract.DataEntry.TABLE_NAME, values, selection, selectionArgs);
db.close();
return rowsUpdated;
}
あなたは 'int rowsUpdated = db.update(DatabaseContract.DataEntry .TABLE_NAME、values、DatabaseContract.DataEntry.COLUMN_NAME_EID + "=" + propertyItem.eId、null) '? –
提供されたeIdでデータベースに登録されているレジスタがありますか? – AlexTa
私はDatabaseContract.DataEntry.COLUMN_NAME_EID列のデータ型を知っているかもしれませんか? –