为了账号安全,请及时绑定邮箱和手机立即绑定

Android列‘_id’不存在吗?

Android列‘_id’不存在吗?

湖上湖 2019-08-02 14:03:57
Android列‘_id’不存在吗?我在记事本的例子中遇到了问题。下面是NotepadCodeLab/NotepAdvanc1S卷积的代码:String[] from = new String[] { NotesDbAdapter.KEY_TITLE };int[] to = new int[] { R.id.text1 }; SimpleCursorAdapter notes = new SimpleCursorAdapter(this,R.layout.notes_row, c, from, to);这段代码似乎运行良好。但我要澄清的是,我运行了亚行工具并运行SQLite 3。sqlitt>.schemaCREATE TABLE android_metadata (locale TEXT);CREATE TABLE notes (_id integer primary key autoincrement, title textnot null, body text not null);我觉得一切都很好。现在来看我的应用程序,据我所见,它基本上是一样的,只是做了一些小改动。我已经简化和简化了我的代码,但问题仍然存在。String[] from = new String[] { "x" };int[] to = new int[] { R.id.x };SimpleCursorAdapter adapter = null;try{     adapter = new SimpleCursorAdapter(this, R.layout.circle_row, cursor, from, to);}catch (RuntimeException e){     Log.e("Circle", e.toString(), e);}当我运行我的应用程序时,我得到一个RuntimeException,并在logcat中从Log.e()声明:logcat消息:java.lang.IllegalArgumentException:列‘_id’不存在因此,回到SQLite 3,看看我的模式有什么不同:模式创建表Android_元数据(地区文本);创建表圆(_id整数主键自动增量、序列整数、半径实数、x实、y实);我不知道我怎么会错过‘_id’。我做错了什么?我的应用程序和记事本示例之间的一个不同之处是,我使用Eclipse向导从头开始创建应用程序,而示例应用程序已经放在一起。对于使用SQLite数据库的新应用程序,是否需要进行某种环境更改?
查看完整描述

3 回答

?
慕码人2483693

TA贡献1860条经验 获得超9个赞

这是回答我想在这里把它做得更全面。

SimpleCursorAdapter要求游标的结果集必须包括一个名为“_id”的列。如果没有在表中定义“_id”列,请不要急于更改模式。SQLite为每个表自动添加了一个名为“rowid”的隐藏列。只需显式选择rowid并将其别名为‘_id’Ex即可。

SQLiteDatabase db = mHelper.getReadableDatabase();      
Cursor cur =  db.rawQuery( "select rowid _id,* from your_table", null);




查看完整回答
反对 回复 2019-08-04
?
浮云间

TA贡献1829条经验 获得超4个赞

如果您正在使用db.query,那么它将是这样的.。

db.query(TABLE_USER, new String[] { 
                "rowid _id",
                FIELD_USERNAME,
                }, 
                FIELD_USERNAME + "=" + name, 
                null, 
                null, 
                null, 
                null);




查看完整回答
反对 回复 2019-08-04
  • 3 回答
  • 0 关注
  • 315 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信