android开发分享关于Android SQLite中的“_id”字段

Android SQLite中需要字段“_id”吗?

    在使用使用光标的增强型适配器(如ResourceCursorAdapter)时,_id非常有用。 它被这些适配器用来提供一个ID,它可以用来引用表中与该适配器用于的任何项目(例如ListView中的行)相关的特定行。

    如果不打算在游标中使用需要_id列的类,也可以使用“as _id”来使另一列显示为在您的游标中被称为_id。

    为什么不使用_ROWID_ ?

    无论如何,SQLite为每一行都提供了这个function,所以你可以在你的select语句中将它别名为_id。

    从技术上讲,不需要字段_id ,但是如果你正在使用CursorAdapter类(你可能是,尤其是如果你正在使用记事本的例子),那么是的

    “游标必须包含一个名为”_id“的列,否则这个类将不起作用”

    正如这里的文档所解释的那样。 不幸的是,这些代码示例并没有说明这一点。

    在很多情况下,有一个id字段是相当方便的。 我更喜欢我的自动递增(如下所示)。 我总是findid字段的新用途:)

    当需要将数据附加到适配器时,我喜欢使用表名称别名来将id字段查询为_id 。 示例: SELECT id _id, msg from message order by id 。 这样适配器看到一个叫_id的字段,大家都很开心。

    以下是我如何定义表格的示例:

     CREATE TABLE message (_id INTEGER PRIMARY KEY AUTOINCREMENT, timestamp INTEGER, tripID TEXT, msg TEXT); 

    从官方文件 …

    游标必须包含一个名为“_id”的列,否则这个类将不起作用。 此外,如果合并的游标在其“_id”列中具有重叠值,则对此类使用MergeCursor将不起作用。

    Cursor是:

    该接口提供对数据库查询返回的结果集的随机读写访问。

    换句话说,你需要_id为Android的SQLite(它通常使用光标)

    如果将_id列定义为自动增长整数,则它实际上是SQLite默认提供的ROWID列的别名( )。

    您的创build声明需要采取的forms…

     CREATE TABLE t(_id INTEGER PRIMARY KEY ASC, y, z); 

    为了certificate这一点…

     UPDATE t SET _id=22 WHERE _id=11; 

    然后

     SELECT ROWID, _id FROM t; 

    你会发现_idROWID具有相同的值。

    请注意,如果在CREATE中使用DESC,则会创build一个新列,并且ROWID不是别名。

    当然不是。 它是ListView等一些小部件用来填充数据的便利字段。 看到这个好文章: http : //www.casarini.org/blog/2009/android-contentprovider-on-sqlite-tables-without-the-_id-column/

    当然,如果您要创build自己的UI小部件和自己的适配器,则不必将主键命名为“_id”。 它可以是任何你想要的名字。 但是您将负责pipe理您的UI小部件集合并将它们绑定到数据库中的正确行。 “_id”仅用于Brad指出的ListView。

      以上就是android开发分享关于Android SQLite中的“_id”字段相关内容,想了解更多android开发(异常处理)及android游戏开发关注计算机技术网(www.ctvol.com)!)。

      本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

      ctvol管理联系方式QQ:251552304

      本文章地址:https://www.ctvol.com/addevelopment/515405.html

      (0)
      上一篇 2020年12月1日
      下一篇 2020年12月1日

      精彩推荐