嘿所有我是一个新手安卓,并希望对此有所帮助?
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内容).