Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何按ID从SQLITE数据库中删除数据_Java_Sqlite_Android Studio_Android Sqlite - Fatal编程技术网

Java 如何按ID从SQLITE数据库中删除数据

Java 如何按ID从SQLITE数据库中删除数据,java,sqlite,android-studio,android-sqlite,Java,Sqlite,Android Studio,Android Sqlite,我很难找到如何使用ID从sqlite数据库中删除数据的方法。 如何使用ID从sqlite数据库中删除数据 final ItemTouchHelper.SimpleCallback itemTouchHelper = new ItemTouchHelper.SimpleCallback(0, ItemTouchHelper.LEFT) { @Override public boolean onMove(@NonNull RecyclerView recyclerView, @Non

我很难找到如何使用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{ 私有ArrayList ArrayList注释; 私人语境

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;
}
}

在删除之前,您必须获得您的模型Id,例如:

在DataBaseHelper中创建删除注释功能

你可以试试这个

db.delete(table, whereClause, whereArgs)

删除条目后,刷新您的视图listview

对不起,我不完全理解。您可以发布完整的适配器代码和数据库类代码吗?当然可以。给我一秒钟好的,请刷新页面!请查收。或者,如果你刚刚开始这个项目,我只想建议你在android开发中使用Room数据库和kotlin
public void deleteMyNote(String id){
  SQLiteDatabase db = this.getWritableDatabase();
  db.execSQL("delete from "+ TABLE_NAME +" where ID='"+ id +"'");
}
db.delete(table, whereClause, whereArgs)