Android :: SQLite,没有找到这样的列?

时间:2012-11-01 08:50:39

标签: android-sqlite

嘿所有我是新手Android,并且会喜欢这方面的帮助吗?

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

            }
        });

1 个答案:

答案 0 :(得分:13)

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

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

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

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

但更改帮助函数可能更清晰:

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

因为看起来您可能想要在那里的某个位置使用未加引号的标签(当前已注释掉的ContentValues内容)。