嘿所有我是新手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();
}
});
答案 0 :(得分:13)
您几乎肯定需要引用'asd'
(即代码中的label
变量)。如果它被引用,则它是一个与name
列进行比较的字符串。
如果它没有引用,SQL只会将其视为另一个列名。
您可以在以下活动中执行此操作:
db.deleteLabel ("'" + label + "'");
但更改帮助函数可能更清晰:
db.delete (TABLE_LABELS, KEY_NAME + "='" + label + "'", null);
因为看起来您可能想要在那里的某个位置使用未加引号的标签(当前已注释掉的ContentValues
内容)。