사용자가 단추를 클릭 할 때 데이터베이스에서 모든 데이터를 지우려고합니다. 나는 어떻게 전체 데이터베이스를 삭제하지 않고 그것을 할 지 모르겠다.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) –
불행히도 listview는 화면을 떠나고 adapter.notifyDataSetChanged()와 함께 돌아올 때까지 업데이트되지 않습니다. 어떤 아이디어입니까? – LBJ33