繁体   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