嘿所有我是一个新手安卓,并希望对此有所帮助?
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内容).
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。