尝试执行删除查询时出错
Get error when trying to perform delete query
我想在适配器 class 中单击按钮时执行 2 个查询,第一个是来自 table A 的 select 数据并插入到 Table B,另一个是从 table A.
中删除行
适配器
mdb = new MyDatabaseHelper(v.getContext());
database = mdb.getReadableDatabase();
deleteTask = new DeleteTask();
Cursor cursor = database.rawQuery("SELECT * FROM " + MyDatabaseHelper.TABLE__TASK + " WHERE ID = ? ", new String[]{id+""}, null);
if (cursor != null && cursor.getCount() > 0) {
while (cursor.moveToNext()) {
String allTask = cursor.getString(cursor.getColumnIndex("Title"));
String name = cursor.getString(cursor.getColumnIndex("Name"));
String allTime = cursor.getString(cursor.getColumnIndex("Time"));
String allDate = cursor.getString(cursor.getColumnIndex("Date"));
insertDataToCompleteTab(id, name, allTask, allTime, allDate); //insert to Completed table
deleteTask.deleteData(id); // delete the row of data from Task Table
}
}
删除任务
public void deleteData(int id)
{
database = mdb.getWritableDatabase();
database.delete(MyDatabaseHelper.TABLE__TASK, MyDatabaseHelper.ID1 + "=" + id,null);
database.close();
}
错误
java.lang.NullPointerException
at com.example.seng.healthyapp.DeleteTask.deleteData(DeleteTask.java:124)
at com.example.seng.healthyapp.adapter.AllAdapter.onClick(AllAdapter.java:139)
at android.view.View.performClick(View.java:4230)
指向 deleteTask 方法的错误。但是我已经完成了初始化,为什么我仍然会出现这样的错误?
这是因为您在删除查询中传递了 null,请像这样更新您的代码并检查
public void deleteData(int id)
{
database = mdb.getWritableDatabase();
database.delete(MyDatabaseHelper.TABLE__TASK, MyDatabaseHelper.ID1 + "=?" , new String[] {id});
database.close();
}
它对我有用,试试看...您可以更改此代码以删除所有...
db= myDb.getWritableDatabase();
db.delete(TABLE_NAME, " ID=? " , new String[] {id},null);
db.close();
到处搜索后,我决定删除 deleteTask = new DeleteTask();
并只使用 deleteData(id)
而不是 deleteTask.deleteData(id);
。在适配器中调用方法,但不在适配器中调用其他 class 对象。
我想在适配器 class 中单击按钮时执行 2 个查询,第一个是来自 table A 的 select 数据并插入到 Table B,另一个是从 table A.
中删除行适配器
mdb = new MyDatabaseHelper(v.getContext());
database = mdb.getReadableDatabase();
deleteTask = new DeleteTask();
Cursor cursor = database.rawQuery("SELECT * FROM " + MyDatabaseHelper.TABLE__TASK + " WHERE ID = ? ", new String[]{id+""}, null);
if (cursor != null && cursor.getCount() > 0) {
while (cursor.moveToNext()) {
String allTask = cursor.getString(cursor.getColumnIndex("Title"));
String name = cursor.getString(cursor.getColumnIndex("Name"));
String allTime = cursor.getString(cursor.getColumnIndex("Time"));
String allDate = cursor.getString(cursor.getColumnIndex("Date"));
insertDataToCompleteTab(id, name, allTask, allTime, allDate); //insert to Completed table
deleteTask.deleteData(id); // delete the row of data from Task Table
}
}
删除任务
public void deleteData(int id)
{
database = mdb.getWritableDatabase();
database.delete(MyDatabaseHelper.TABLE__TASK, MyDatabaseHelper.ID1 + "=" + id,null);
database.close();
}
错误
java.lang.NullPointerException
at com.example.seng.healthyapp.DeleteTask.deleteData(DeleteTask.java:124)
at com.example.seng.healthyapp.adapter.AllAdapter.onClick(AllAdapter.java:139)
at android.view.View.performClick(View.java:4230)
指向 deleteTask 方法的错误。但是我已经完成了初始化,为什么我仍然会出现这样的错误?
这是因为您在删除查询中传递了 null,请像这样更新您的代码并检查
public void deleteData(int id)
{
database = mdb.getWritableDatabase();
database.delete(MyDatabaseHelper.TABLE__TASK, MyDatabaseHelper.ID1 + "=?" , new String[] {id});
database.close();
}
它对我有用,试试看...您可以更改此代码以删除所有...
db= myDb.getWritableDatabase();
db.delete(TABLE_NAME, " ID=? " , new String[] {id},null);
db.close();
到处搜索后,我决定删除 deleteTask = new DeleteTask();
并只使用 deleteData(id)
而不是 deleteTask.deleteData(id);
。在适配器中调用方法,但不在适配器中调用其他 class 对象。