特定のテーブルでSQLiteDatabase.update
を使用して複数の行を更新しようとしています。SQLiteDatabase.updateは行に影響しません
コードは、クエリを実行するには:テーブルの
public void onJobStart(int fileType) {
ContentValues cv = new ContentValues();
cv.put(Contract.Entry.UPLOAD_STATUS, STATUS_READY);
String whereClause = String.format(
Locale.US,
"%s = %d AND %s = %d",
Contract.Entry.FILE_TYPE,
fileType,
Contract.Entry.UPLOAD_STATUS,
STATUS_CREATED
);
int success = mDatabase.update(
Contract.Entry.TABLE_NAME,
cv,
whereClause,
null
);
Log.e(TAG, "success=" + success);
}
の作成をし、それが列です:このコードは動作しませんし、私は、クエリを実行した後success=0
を得続けるよ
public class DbHelper extends SQLiteOpenHelper {
public static final int DATABASE_VERSION = 1;
public static final String DATABASE_NAME = "cache.db";
private DbHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
String table = "CREATE TABLE " + Contract.Entry.TABLE_NAME + " (" +
Contract.Entry._ID + " INTEGER PRIMARY KEY AUTOINCREMENT," +
Contract.Entry.UPLOAD_STATUS + " INTEGER, " +
Contract.Entry.FILE_TYPE + " INTEGER " + ");"
db.execSQL(table);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE IF EXISTS " + Contract.Entry.TABLE_NAME);
onCreate(db);
}
}
public final class Contract {
public Contract() {}
public static abstract class Entry implements BaseColumns {
public static final String TABLE_NAME = "files";
public static final String UPLOAD_STATUS = "uploadStatus";
public static final String FILE_TYPE = "fileType";
}
}
。これは、WHERE句は一引数でいたし、それはすなわち働いたので、昨日までのような奇妙な:
String whereClause = String.format(
Locale.US,
"%s = %d",
Contract.Entry.UPLOAD_STATUS,
STATUS_CREATED
);
編集: はまた、この試みた:
String whereClause = Contract.Entry.FILE_TYPE + " = ? AND " + Contract.Entry.UPLOAD_STATUS + " = ?";
String[] whereArgs = new String[] {String.valueOf(fileType), String.valueOf(STATUS_CREATED)};
int success = mDatabase.update(
Contract.Entry.TABLE_NAME,
cv,
whereClause,
whereArgs
);
基本的に私はすべての更新を希望しますステータスが作成された行 数時間の間、ここに解決策が見つかりませんでした。とGoogle。
アイデア? おかげ
'Log.e(TAG、「成功=」+ a)は'実際にあなたのコード内またはこのAはです。打ち間違え?それは 'Log.e(TAG、success =" + success) 'ではありませんか? – Cheticamp
はいそれはタイプミスです。 – sharonooo
明らかな答えは、WHEREフィルタと一致する行がないことです。 –