热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Android中BaseColumns的_ID主键的用法是什么

如何解决《Android中BaseColumns的_ID主键的用法是什么》经验,为你挑选了1个好方法。

有点令人困惑。...如果我为每个表实现BaseColumns,它会自动为我创建一个称为_ID的自动递增主键,但是我是否还需要为每个表都创建自己的主键?多余甚至不必要?

如果我需要自己的主键,例如_MyID,我想主键将由_ID和我自己的(_MyID)组成,对吗?因此,在这种情况下,可以插入多个具有相同_MyID ....的寄存器,因为_ID是自动自动递增的,即:

_ID      _MyID  Other Fields.....
1         1000  ....
2         1000  ....
3         1000  ....

... 等等

因此,在这种情况下,如何控制_MyID只有一个寄存器的值可以为1000?

另外,我想我可以使用_ID列作为其他表的外键,对吗?



1> Karakuri..:

主要用途BaseColumns._ID是Android CursorAdapter会在您为其指定的游标中查找该列名称。也许还有其他的类可以做到这一点,但是我想不起任何东西。如果您不使用CursorAdapter,那么实际上并没有什么可绑定的,可以使用_id作为表中的列名,并且可以随意命名该列。

它会自动为我创建一个自动递增的主键,称为_ID

根据您到目前为止所显示的内容,没有自动的方法。如果执行如下所示的SQL,则只有这样的列:

CREATE TABLE tableName (_id INTEGER PRIMARY KEY AUTOINCREMENT, ...);

您可以轻松地将其省略,也可以为主键指定其他名称。此外,没有什么要求您的主键可以自动增加。只要值是唯一的,它就满足主键要求。换句话说,这也很好:

CREATE TABLE tableName (_id INTEGER PRIMARY KEY, ...);

如果我需要自己的主键,例如_MyID,我想主键将由_ID和我自己的(_MyID)组成,对吗?

不完全的。您将必须执行以下操作:

CREATE TABLE tableName (_id INTEGER, _myId INTEGER, ..., PRIMARY KEY(_id, myId));

这将创建一个组合键,但是请注意,这两列本身都不被声明为主键。坦白说,如果您不需要这样的安排,请坚持使用一个主键。

最后一件事:

如果你正在计划使用CursorAdapter,你可能想命名为方便起见,列_id,但即使如此,你不必。唯一重要的是,光标在该名称旁边有一列。表中的实际列可以具有不同的名称,您只需要在查询时对其加上别名即可在游标中使用正确的名称:

SELECT _myId as _id, ... FROM ...;


推荐阅读
author-avatar
狮子座刘娜_676
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有