ユーザーがボタンをクリックしたときにデータベースからすべてのデータを消去しようとしています。私はデータベース全体を削除しないでそれを行う方法がわかりません。sqlite dbからデータを消去
(彼らはまだ後でアプリでそれに項目を追加することができますので、私は、列および表を作成したままにしておきたい)
public class MyProgress extends BaseActivity{
Button btnClear;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.my_progress);
mToolBar = activateToolbar();
setUpNavigationDrawer();
getSupportActionBar().setTitle("My Progress");
btnClear.findViewById(R.id.btnClear);
RecordsDatabase helper = new RecordsDatabase(this);
Cursor c = helper.getRecords();
ListView listViewRec = (ListView) findViewById(R.id.listViewRecord);
final TodoCursorAdapter adapter = new TodoCursorAdapter(this, c);
listViewRec.setAdapter(adapter);
btnClear.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//NEED TO CLEAR DB HERE
adapter.notifyDataSetChanged();
}
});
}
}
マイrecordsDatabase:
public class RecordsDatabase extends SQLiteOpenHelper {
public static final int DATABASE_VERSION = 1;
public RecordsDatabase(Context context) {
super(context, RecordContract.RecordInfo.DATABASE_NAME, null, DATABASE_VERSION);
Log.d("Database operations", "Database created");
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("CREATE TABLE " + RecordContract.RecordInfo.TABLE_NAME + " ("
+ BaseColumns._ID + " INTEGER PRIMARY KEY AUTOINCREMENT,"
+ RecordContract.RecordInfo.RECORDS_DATE + " TEXT NOT NULL,"
+ RecordContract.RecordInfo.RECORDS_SQUAT + " TEXT NOT NULL,"
+ RecordContract.RecordInfo.RECORDS_BENCH + " TEXT NOT NULL,"
+ RecordContract.RecordInfo.RECORDS_DEAD + " TEXT NOT NULL,"
+ RecordContract.RecordInfo.RECORDS_TOTAL + " TEXT NOT NULL)"
);
Log.d("Database operations", "Table created");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
public void putInformation(String date, String squat, String bench, String dead, String total) {
SQLiteDatabase SQ = getWritableDatabase();
ContentValues contentValues = new ContentValues();
contentValues.put(RecordContract.RecordInfo.RECORDS_DATE, date);
contentValues.put(RecordContract.RecordInfo.RECORDS_SQUAT, squat);
contentValues.put(RecordContract.RecordInfo.RECORDS_BENCH, bench);
contentValues.put(RecordContract.RecordInfo.RECORDS_DEAD, dead);
contentValues.put(RecordContract.RecordInfo.RECORDS_TOTAL, total);
long k = SQ.insert(RecordContract.RecordInfo.TABLE_NAME, null, contentValues);
Log.d("Database operations", "Record added(1 row)");
}
public Cursor getRecords() {
SQLiteDatabase SQ = getReadableDatabase();
String[] columns = {RecordContract.RecordInfo._ID, RecordContract.RecordInfo.RECORDS_DATE, RecordContract.RecordInfo.RECORDS_SQUAT, RecordContract.RecordInfo.RECORDS_BENCH
, RecordContract.RecordInfo.RECORDS_DEAD, RecordContract.RecordInfo.RECORDS_TOTAL};
Cursor CR = SQ.query(RecordContract.RecordInfo.TABLE_NAME, columns,null, null, null, null, null);
return CR;
}
}
私は追加することを考えていましたRecordsDatabase.javaにclearInfo()
がありますが、どうすればよいかわかりません。
'DROP TABLE' ...' CREATE TABLE' –
[アンドロイドのsqliteからテーブルをクリアできません](http://stackoverflow.com/questions/11951698/can-not-clear-table-from) -sqlite-in-android) –
残念ながら、残念ながら、私が画面を離れて戻り、adapter.notifyDataSetChanged()であっても、リストビューは更新されません。 – LBJ33