我正在开发一个包含 SQL 中的表并在 ListViews 中显示它们的项目,当我尝试访问包含 listview 的 Activity 时,我得到“列 '_id' 不存在”,我在这里检查了其他答案他们都说我必须有一个名为“_id”的列,而我确实如此,还有什么可能导致此错误?
这是我的常量类
final static String DB_CLIENTS_ID = "_id";
final static String DB_CLIENTS_NAME = "name";
final static String DB_CLIENTS_BALANCE = "balance";
final static String DB_CLIENTS_IDNUM = "idNum";
final static String DB_CLIENTS_TYPE = "type";
这是获取curser的hendler函数:
public Cursor queryClients(){
db = dbOpenHelper.getReadableDatabase();
Cursor cursor = db.query(dbConstants.TABLE_NAME_CLIENTS,
null, null, null, null, null,
dbConstants.DB_CLIENTS_NAME+ " ASC");
return cursor;
}
here is the snippet that uses the curser to make the listview:
dbhendler = new dbHendler(this);
Cursor c = dbhendler.queryClients();
startManagingCursor(c);
String[] from = new String[] {dbConstants.DB_CLIENTS_ID, dbConstants.DB_CLIENTS_NAME,dbConstants.DB_CLIENTS_BALANCE};
int[] to = new int[] {R.id.account_list_id_number, R.id.account_list_client_name, R.id.account_list_balance};
adapter = new SimpleCursorAdapter(this, R.layout.account_list_line, c, from, to);
ListView lv = (ListView) findViewById(R.id.listView1);
lv.setAdapter(adapter);
除了没有名为“_id”的列之外,可能还有什么问题?
编辑:
这是日志猫:
01-28 10:00:31.806: E/AndroidRuntime(27937): java.lang.RuntimeException: 无法启动 Activity ComponentInfo{com.ziv.bank_app/com.ziv.bank_app.ClientListActivity}: java.lang。 IllegalArgumentException:列“_id”不存在
编辑:
创建表的代码:
public void onCreate(SQLiteDatabase db) {
String sql1 = ""
+ "CREATE TABLE "+ dbConstants.TABLE_NAME_CLIENTS+ " ("
+dbConstants.DB_CLIENTS_ID + " INTEGER PRIMARY KEY AUTOINCREMENT,"
+dbConstants.DB_CLIENTS_NAME + " TEXT,"
+dbConstants.DB_CLIENTS_IDNUM + " INTEGER,"
+dbConstants.DB_CLIENTS_TYPE + " TEXT,"
+dbConstants.DB_CLIENTS_BALANCE + " REAL"
+ ")";
db.execSQL(sql1);
最佳答案
当第一次看到这个问题时,我在这里看到答案是有一个名为“_id”的字符串,我在表创建文件中更改了它,但是从未创建新文件,它会在新设备上创建/emulator 但在我的上它仍然使用我创建的那个。
创建一个新的数据库文件,只需在建表代码中更改其名称即可,问题就解决了。
编辑:
同时提高版本号也可以解决问题
关于android - 在 android 中使用 SQLite 时,列 '_id' 不存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21401989/