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