Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/366.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 从数据库和arraylist中删除行_Java_Android_Sqlite_Android Alertdialog - Fatal编程技术网

Java 从数据库和arraylist中删除行

Java 从数据库和arraylist中删除行,java,android,sqlite,android-alertdialog,Java,Android,Sqlite,Android Alertdialog,这就是我到现在为止所做的 活动课 traineesListView .setOnItemLongClickListener(new OnItemLongClickListener() { @Override public boolean onItemLongClick(AdapterView<?> arg0, View arg1, int arg2

这就是我到现在为止所做的

活动课

traineesListView
            .setOnItemLongClickListener(new OnItemLongClickListener() {

                @Override
                public boolean onItemLongClick(AdapterView<?> arg0,
                        View arg1, int arg2, final long person_id) {
                    currentTrainee = (Trainee) arg0.getAdapter().getItem(
                            arg2);
                    SharedMemory.getInstance().setCurrentTrainee(
                            currentTrainee);

                    String items[] = { "Edit your information",
                            "Unregister from training" };
                    Builder alert = new AlertDialog.Builder(
                            TraineeActivity.this);
                    alert.setTitle("Dear!" + " "
                            + currentTrainee.getFormatedName() + "," + " "
                            + "Choose your action!!");
                    alert.setItems(items, new OnClickListener() {

                        @Override
                        public void onClick(DialogInterface arg0,
                                int selectedItem) {

                            if (selectedItem == 0) {

                                SharedMemory.getInstance()
                                        .setCurrentAction(
                                                SharedMemory.ACTION_EDIT);
                                SharedMemory.getInstance()
                                        .setCurrentTrainee(currentTrainee);

                                Intent intent = new Intent(
                                        TraineeActivity.this,
                                        FormActivity.class);
                                TraineeActivity.this.startActivity(intent);

                            } else if (selectedItem == 1) {
                                // delete trainee information
                                Builder alert = new AlertDialog.Builder(
                                        TraineeActivity.this);
                                alert.setTitle("Dear!" + " "
                                        + currentTrainee.getFormatedName());
                                alert.setMessage("Are you sure want to unregister from training?");
                                alert.setPositiveButton(
                                        "YES",
                                        new DialogInterface.OnClickListener() {

                                            @Override
                                            public void onClick(
                                                    DialogInterface arg0,
                                                    int arg1) {
                                                int training_id = SharedMemory
                                                        .getInstance()
                                                        .getCurrentTraining()
                                                        .getId();
                                                // Unregister Trainee
                                                currentTrainee
                                                        .unRegisterFromTraining(training_id);
                                                Log.i( "Training ID:"+Integer.toString(training_id), "Person ID:"+Integer.toString(currentTrainee.getId()));
                                                // Remove trainee from
                                                // ArrayList
                                            }
                                        });

                                alert.setNegativeButton(
                                        "NO",
                                        new DialogInterface.OnClickListener() {

                                            @Override
                                            public void onClick(
                                                    DialogInterface arg0,
                                                    int arg1) {
                                                arg0.cancel();

                                            }
                                        });
                                alert.show();

                            }

                        }

                    });
                    alert.show();
                    return true;
                }

            });
我的数据库类

public void delete(String tableAttendance, String where,String[] whereArgs) {
    // TODO Auto-generated method stub

}
我无法从db表中删除该行,甚至我也看不到任何错误。我需要一些方法。这对你来说可能很简单,但我不明白为什么?谢谢你的帮助

public void delete(String tableAttendance, String where,String[] whereArgs) {
    // TODO Auto-generated method stub

}
此方法实现为空,并且不执行任何操作。您可能应该将其委托给
SQLiteDatabase

public void delete(String tableAttendance, String where,String[] whereArgs) {
    db.delete(tableAttendance, where, whereArgs);
}
其中,
db
是一个用于写入
SQLiteDatabase
的开放成员

然后修复SQL语法:

db.delete(DatabaseHelper.TABLE_ATTENDANCE, DatabaseHelper.TrainingId
        + "=" + training_id + "AND" + DatabaseHelper.PersonId+"= ?"
        ,new String[] {Integer.toString(this.getId())});

您需要在

周围使用空格,您可能会在此处出错。在
之间提供空格,并在参数传递后提供
“=?”
而不是单个
“=”
。更正如下

 db.delete(DatabaseHelper.TABLE_ATTENDANCE, DatabaseHelper.TrainingId
    + "= ?" + training_id + " AND " + DatabaseHelper.PersonId+"= ?"
    ,new String[] {Integer.toString(this.getId())});

您可能需要在
”和“
周围留出一些空格,然后@user3180746在briefandroid.database.sqlite.SQLiteException:unrecogned token:“1和人员id”(代码1):,编译时:从培训id=1和人员id=”的考勤中删除?得到这个错误!!!是的,您需要将
“和”
更改为
“和”
以在其周围添加空格。效果很好..)。简单的错误有时会让人头痛。
 db.delete(DatabaseHelper.TABLE_ATTENDANCE, DatabaseHelper.TrainingId
    + "= ?" + training_id + " AND " + DatabaseHelper.PersonId+"= ?"
    ,new String[] {Integer.toString(this.getId())});