android-sqlite – Android :: SQLite,没有找到这样的列?

前端之家收集整理的这篇文章主要介绍了android-sqlite – Android :: SQLite,没有找到这样的列?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
嘿所有我是一个新手安卓,并希望对此有所帮助?

android.database.sqlite.sqliteException:没有这样的列:asd :,编译时:DELETE FROM标签WHERE name = asd

这是我面临的错误,这是代码

这是DBhelper中的方法

/**
 * Delete a label table
 * */
public void deleteLabel(String label) {
    sqliteDatabase db = this.getWritableDatabase();

    // ContentValues values = new ContentValues();
    // values.remove(label);

    // Deleting Row
    db.delete(TABLE_LABELS,KEY_NAME + "=" + label,null);
    db.close(); // Closing database connection
}

这是调用方法的主要Activity代码

// for spinner onItemListener
// and here is what label is

final String label = parent.getItemAtPosition(position).toString();

Button dialogDeletelButton = (Button) dialog
                .findViewById(R.id.deleteButton);
        dialogDeletelButton.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // database handler
                DatabaseHandler db = new DatabaseHandler(
                        getApplicationContext());

                // inserting new label into database
                db.deleteLabel(label);

                // Hiding the keyboard
                InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
                imm.hideSoftInputFromWindow(inputLabel.getWindowToken(),0);

                // loading spinner without the deleted data
                loadSpinnerData();

            }
        });

解决方法

您几乎肯定需要引用’asd'(即代码中的label变量).如果它被引用,它是一个与名称列进行比较的字符串.

如果它没有引用,sql只会将其视为另一个列名.

您可以在以下活动中执行以下操作:

db.deleteLabel ("'" + label + "'");

但是更改辅助函数可能更干净:

db.delete (TABLE_LABELS,KEY_NAME + "='" + label + "'",null);

因为看起来你可能想要在那里的某个点处使用未加引号的标签(当前被注释掉的ContentValues内容).

猜你在找的Android相关文章