Android SQLite列_id错误,
问题描述:
我想在数据库中查询。数据库没有在应用程序中创建,我已经创建了外部,并且我正在使用this tutorial作为解释。但是我有一个与列_id相关的错误。 在类DatabaseHelper,我有以下代码:Android SQLite列_id错误,
public Cursor Search(Context context,String search){
SQLiteDatabase db= getReadableDatabase();
String cursorFactory = "SELECT * FROM words WHERE eng || ' ' || rus LIKE ?";
Cursor cursor = db.rawQuery(cursorFactory, new String[]{"%" + search + "%"});
return cursor;
}
活动中,我写的代码是:
public void search(View v){
text2search= searchText.getText().toString();
cursor= myDbHelper.Search(mContext, text2search);
adapter =new SimpleCursorAdapter(getBaseContext(),R.layout.list_item,
cursor,
new String[]{"rusword","engword","kind"},
new int[]{R.id.rusWord,R.id.engWord,R.id.knd});
wordsList.setAdapter(adapter);
}
而且我得到了_id相关的错误:(在logcat中)
09-03 14:12:38.018:E/AndroidRuntime(16581): java.lang.IllegalArgumentException异常:列 '_id' 不存在
致3210
但数据的基础上,我创造,它有“_id”列:(我不能上传图片,所以这里是链接https://www.dropbox.com/s/9a2ol1acrnxmzob/sql-db-rusWjpg.png)
谢谢!
答
所以问题不是太棘手。一些适配器,在你的情况下,SimpleCursorAdapter
这个适配器在尝试选择你需要选择的东西时需要选择列_id。 所以试试这个:
new String[] {"_id", "rusword", "engword", "kind"}
String cursorFactory = "SELECT _id, [next columns] FROM ...;
现在它应该工作。
类似的问题在这里:
注:在这种情况下,你不希望有_id栏你可以使用这个简单的一招:
SELECT keyID AS _id FROM TableName
试着问没有'*'的db,但是用'“_id,rusword,engword,kind”'......如果re不是'_id'列,你应该得到错误... – Selvin