Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/193.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
Android 根据名称从sql数据库中删除时出错_Android_Sqlite_Listview_Sql Delete - Fatal编程技术网

Android 根据名称从sql数据库中删除时出错

Android 根据名称从sql数据库中删除时出错,android,sqlite,listview,sql-delete,Android,Sqlite,Listview,Sql Delete,我有一个简单的列表视图,其中填充了字符串值,当用户长时间单击特定项时,他可以选择删除它(在上下文操作模式下)。listview中的值位于sql数据库中。我的“deleteCat”方法似乎不起作用。每当我试图删除一个项目时,我都会出错(“没有这样的列:*items\u name*”) public boolean onActionItemClicked(ActionMode mode, MenuItem item) { switch (item.getItemId()) {

我有一个简单的列表视图,其中填充了字符串值,当用户长时间单击特定项时,他可以选择删除它(在上下文操作模式下)。listview中的值位于sql数据库中。我的“deleteCat”方法似乎不起作用。每当我试图删除一个项目时,我都会出错(“没有这样的列:*items\u name*”)

public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
        switch (item.getItemId()) {
            case R.id.menu_delete_cat:

                CategoryDatabase entry = new CategoryDatabase(MainActivity.this);
                entry.open();
                entry.deleteCat(itemClicked);

                List<String> all = entry.getAllCategory();
                lv = (ListView)findViewById(R.id.listView1);
                arrayAdapter = new ArrayAdapter<String>(MainActivity.this,android.R.layout.simple_list_item_1, all);
                lv.setAdapter(arrayAdapter);
                entry.close();
                mode.finish(); // Action picked, so close the CAB
                return true;
public boolean onActionItemClicked(ActionMode模式,菜单项){
开关(item.getItemId()){
案例R.id.菜单\删除\类别:
CategoryDatabase条目=新的CategoryDatabase(MainActivity.this);
entry.open();
entry.deleteCat(itemClicked);
List all=entry.getAllCategory();
lv=(ListView)findViewById(R.id.listView1);
arrayAdapter=新的arrayAdapter(MainActivity.this,android.R.layout.simple\u list\u item\u 1,全部);
低压设置适配器(阵列适配器);
entry.close();
mode.finish();//已拾取操作,因此关闭驾驶室
返回true;
数据库类:

公共类类别数据库{

public static final String KEY_ROWID = "_id";
public static final String KEY_CATEGORY = "category";

private static final String DATABASE_NAME = "DBCategory";
private static final String DATABASE_TABLE = "categoryTable";
private static final int DATABASE_VERSION = 1;

private DbHelper ourHelper;
private final Context ourContext;
private SQLiteDatabase ourDatabase;

public CategoryDatabase(Context c){
    ourContext = c;
}

public CategoryDatabase open() throws SQLException{
    ourHelper = new DbHelper(ourContext);
    ourDatabase = ourHelper.getWritableDatabase();
    return this;
}

public void close(){
    ourHelper.close();
}

private static class DbHelper extends SQLiteOpenHelper{

    public DbHelper(Context context) {
        super(context, DATABASE_NAME, null, DATABASE_VERSION);
        // TODO Auto-generated constructor stub
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        db.execSQL("CREATE TABLE " + DATABASE_TABLE + " (" +
                KEY_ROWID + " INTEGER PRIMARY KEY AUTOINCREMENT, " +
                KEY_CATEGORY + " TEXT NOT NULL);"
        );
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        db.execSQL("DROP TABLE IF EXISTS " + DATABASE_TABLE);
        onCreate(db);
    }

}

public long createEntry(String category) {
    ContentValues cv = new ContentValues();
    cv.put(KEY_CATEGORY, category);
    return ourDatabase.insert(DATABASE_TABLE, null, cv);
}

public List<String> getAllCategory() {
    List<String> List = new ArrayList<String>();
    // Select All Query
    String selectQuery = "SELECT  * FROM " + DATABASE_TABLE;

    Cursor cursor = ourDatabase.rawQuery(selectQuery, null);

    // looping through all rows and adding to list
    if (cursor.moveToFirst()) {
        do {
            List.add(cursor.getString(1));
        } while (cursor.moveToNext());
    }
    return List;
   }

public void deleteCat(String itemClicked) {
    ourDatabase.delete(DATABASE_TABLE, KEY_CATEGORY + "=" + itemClicked, null);     
}  
公共静态最终字符串键\u ROWID=“\u id”;
公共静态最终字符串键\u CATEGORY=“CATEGORY”;
私有静态最终字符串数据库\u NAME=“DBCategory”;
私有静态最终字符串数据库\u TABLE=“categoryTable”;
私有静态最终int数据库_VERSION=1;
私人助理;
私人最终语境;
私有SQLITE数据库;
公共类别数据库(上下文c){
ourContext=c;
}
public CategoryDatabase open()引发SQLException{
ourHelper=newdbhelper(ourContext);
ourDatabase=ourHelper.getWritableDatabase();
归还这个;
}
公众假期结束(){
ourHelper.close();
}
私有静态类DbHelper扩展了SQLiteOpenHelper{
公共DbHelper(上下文){
super(上下文、数据库名称、null、数据库版本);
//TODO自动生成的构造函数存根
}
@凌驾
public void onCreate(SQLiteDatabase db){
db.execSQL(“创建表”+数据库表+”(“+
KEY_ROWID+“整数主键自动递增,”+
键_类别+“文本不为空;”
);
}
@凌驾
public void onUpgrade(SQLiteDatabase db,int-oldVersion,int-newVersion){
db.execSQL(“如果存在删除表”+数据库_表);
onCreate(db);
}
}
公共长createEntry(字符串类别){
ContentValues cv=新的ContentValues();
cv.put(关键类别、类别);
返回ourDatabase.insert(DATABASE_TABLE,null,cv);
}
公共列表getAllCategory(){
列表=新的ArrayList();
//选择所有查询
String selectQuery=“SELECT*FROM”+数据库\u表;
Cursor Cursor=ourDatabase.rawQuery(selectQuery,null);
//循环遍历所有行并添加到列表
if(cursor.moveToFirst()){
做{
List.add(cursor.getString(1));
}while(cursor.moveToNext());
}
退货清单;
}
公共void deleteCat(字符串项已单击){
删除(数据库\表,键\类别+“=”+itemClicked,空);
}  

}在删除查询中添加引号

ourDatabase.delete(数据库\u表,键\u类别+“=”+itemClicked+“”,null);

否则sql会认为它是一个列