gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 10:19:38 24 4
gpt4 key购买 nike

大家好,我是 Android 新手,希望对此有所帮助吗?

android.database.sqlite.SQLiteException:没有这样的列:asd:,编译时:DELETE FROM labels 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
}

这是调用该方法的主要事件代码:
// 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 变量)。如果它被引用,则它是一个与 name 进行比较的字符串柱子。

如果未加引号,SQL 只会将其视为另一个列名。

你可以在你的事件中做到这一点:

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

但更改辅助函数可能会更清晰:
db.delete (TABLE_LABELS, KEY_NAME + "='" + label + "'", null);

因为看起来你可能想在那里的某个时候用未引用的标签做一些事情( ContentValues 目前被注释掉的东西)。

关于android-sqlite - Android::SQLite,没有找到这样的列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13173702/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com