簡體   English   中英

如何通過 ID 從 SQLITE 數據庫中刪除數據

[英]How do I delete data from SQLITE database by ID

我在找出如何使用 ID 從我的 sqlite 數據庫中刪除數據時遇到了很多麻煩。 如何使用 ID 從我的 sqlite 數據庫中刪除數據?

final ItemTouchHelper.SimpleCallback itemTouchHelper = new ItemTouchHelper.SimpleCallback(0, ItemTouchHelper.LEFT) {
    @Override
    public boolean onMove(@NonNull RecyclerView recyclerView, @NonNull RecyclerView.ViewHolder viewHolder, @NonNull RecyclerView.ViewHolder target) {
        return false;
    }



    @Override
    public void onSwiped(@NonNull RecyclerView.ViewHolder viewHolder, int direction) {
        list.remove(viewHolder.getAdapterPosition());
        adapter.notifyDataSetChanged();

         /////// I want to delete this data from my sqlite Data Base by using it's id. But how do I get the id?///////

    }
};

這應該在 OnBindViewHolder 中完成嗎?

 @Override
public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
    holder.notePadTextView.setText(arrayListNote.get(position).getNote());
}

這是我的自定義適配器:

公共類 NotesCustomAdapter 擴展 RecyclerView.Adapter{ private ArrayList arrayListNote; 私有上下文上下文;

public NotesCustomAdapter(ArrayList<newNote> arrayListNote, Context context) {
    this.arrayListNote = arrayListNote;
    this.context = context;
}

@NonNull
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
    View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.notepad_model,parent,false);
    ViewHolder holder = new ViewHolder(view);
    return holder;
}

@Override
public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
    holder.notePadTextView.setText(arrayListNote.get(position).getNote());
}

@Override
public int getItemCount() {
    return arrayListNote.size();
}

public class ViewHolder extends RecyclerView.ViewHolder{

    LinearLayout NotePadMode;
    TextView notePadTextView;

    public ViewHolder(@NonNull View itemView) {
        super(itemView);

        NotePadMode= itemView.findViewById(R.id.NotePadModel);
        notePadTextView = itemView.findViewById(R.id.notePadTextView);
    }
}

}

這是我的 SQLite 數據庫:

public class DataBaseHelper extends SQLiteOpenHelper {
public static final String DATABSE_NAME = "AllWorkHours.db";
public static final String TABLE_NAME = "ALLWORKHOURS";
public static final String COL_0 =  "ID";
public static final String COL_1 =  "DATE";
public static final String COL_2 =  "TIMESHIFTSTART";
public static final String COL_3 =  "TIMESHIFTENDS";
public static final String COL_4 =  "NOTES";
public static final String COL_5 =  "NOTEMEMOS";
public static final int DATABASE_Version = 5;

public DataBaseHelper(Context context) {
    super(context, DATABSE_NAME,null,DATABASE_Version);
}

@Override
public void onCreate(SQLiteDatabase db) {
    db.execSQL("CREATE TABLE " + TABLE_NAME + "(ID INTEGER PRIMARY KEY AUTOINCREMENT, DATE TEXT, TIMESHIFTSTART INTEGER, TIMESHIFTENDS TEXT, NOTES TEXT, NOTEMEMOS TEXT)");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    db.execSQL("DROP TABLE IF EXISTS ALLWORKHOURS");
    onCreate(db);
}

public boolean addHours(String Date, String TimeShiftStart, String TimeShiftEnds, String Notes){
    SQLiteDatabase db = this.getWritableDatabase();
    ContentValues contentValues = new ContentValues();
    contentValues.put(COL_1, Date);
    contentValues.put(COL_2, TimeShiftStart);
    contentValues.put(COL_3, TimeShiftEnds);
    contentValues.put(COL_4, Notes);
    long inserted = db.insert(TABLE_NAME,null,contentValues);

    if (inserted == -1){
        return false;
    }else{
        return true;
    }
}

public ArrayList<newShift> viewAllHours(){
    ArrayList<newShift> arrayList = new ArrayList<>();
    SQLiteDatabase db = this.getWritableDatabase();
    Cursor cursor = db.rawQuery("SELECT * FROM " + TABLE_NAME, null);

    while(cursor.moveToNext()){
        int id = cursor.getInt(0);
        String Date = cursor.getString(1);
        String timestart = cursor.getString(2);
        String timeEnds = cursor.getString(3);
        String notes = cursor.getString(4);

        newShift newShift = new newShift(id,Date,timestart,timeEnds,notes);

        arrayList.add(newShift);
    }
    return arrayList;
}

public boolean addNotes(String NOTEMEMOS) {
    SQLiteDatabase db = this.getWritableDatabase();
    ContentValues contentValues = new ContentValues();
    contentValues.put(COL_5, NOTEMEMOS);
    long inserted = db.insert(TABLE_NAME, null, contentValues);

    if (inserted == -1){
        return false;
    }else{
        return true;
    }
}

public  ArrayList<newNote> ViewAllNotes() {
    ArrayList<newNote> arrayList = new ArrayList<>();
    SQLiteDatabase db = this.getWritableDatabase();
    Cursor cursor = db.rawQuery("SELECT NOTEMEMOS FROM " + TABLE_NAME, null);


    while(cursor.moveToNext()){
        String notes = cursor.getString(0);
        newNote newnote = new newNote(notes);
        arrayList.add(newnote);
    }
    return arrayList;
}

}

你可以試試這個

db.delete(table, whereClause, whereArgs)

刪除條目后,刷新您的視圖(列表視圖)

您必須在刪除之前獲取模型的 ID,例如:

newShift obj = list.get(viewHolder.getAdapterPosition());
DataBaseHelper _yourdatabaseObject = youtDatabaseInstance();
 _yourdatabaseObject.removeDataByID(""+obj.id);


 list.remove(viewHolder.getAdapterPosition());
 adapter.notifyDataSetChanged();

在DataBaseHelper 中做一個刪除注釋的函數。

public void deleteMyNote(String id){
  SQLiteDatabase db = this.getWritableDatabase();
  db.execSQL("delete from "+ TABLE_NAME +" where ID='"+ id +"'");
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM