我想清除数据库中的所有数据,当用户点击一个按钮。我不确定如何在不删除整个数据库的情况下执行此操作。清除来自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' –
[无法从android中的sqlite中清除表格](http://stackoverflow.com/questions/11951698/can-not-clear-table-from -sqlite-in-android) –
我得到它的工作,谢谢,不幸的是,listview不会更新,直到我离开屏幕并返回,即使与adapter.notifyDataSetChanged(); ..任何想法? – LBJ33