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性能优化——之控件的优化 前面讲了图像的优化,接下...
前言 上一篇已经讲了如何实现textView中粗字体效果,里面主要...
最近项目重构,涉及到了数据库和文件下载,发现GreenDao这个...
WebView加载页面的两种方式 一、加载网络页面 加载网络页面,...
给APP全局设置字体主要分为两个方面来介绍 一、给原生界面设...
前言 最近UI大牛出了一版新的效果图,按照IOS的效果做的,页...