Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何为多列主键获取唯一的_id列?_Android_Database_Sqlite - Fatal编程技术网

Android 如何为多列主键获取唯一的_id列?

Android 如何为多列主键获取唯一的_id列?,android,database,sqlite,Android,Database,Sqlite,根据一些博客,比如甚至在这里的一些Aswer中 在将database包含到项目中之前,第一步是将表的主id字段重命名为“_id”,以便Android知道在哪里绑定表的id字段 对于具有组合主键的表,应该做什么 假设我正在创建产品id和商店id之间的关系,以分配其价格 CREATE TABLE `Products-Stores` ( `product` INTEGER NOT NULL, `store` INTEGER NOT NULL, `price` INTEGER

根据一些博客,比如甚至在这里的一些Aswer中

在将database包含到项目中之前,第一步是将表的主id字段重命名为“_id”,以便Android知道在哪里绑定表的id字段

对于具有组合主键的表,应该做什么 假设我正在创建产品id和商店id之间的关系,以分配其价格

CREATE TABLE `Products-Stores` (
    `product`   INTEGER NOT NULL,
    `store` INTEGER NOT NULL,
    `price` INTEGER NOT NULL,
    PRIMARY KEY(product,store)
);

不需要重命名数据库中的任何列。SQL允许使用如下列别名:

SELECT integer_primary_key AS _id 
   ...
只有在使用
ListAdapter
显示从数据库查询的光标内容时,才需要这样做。要执行此操作,必须在光标中有一个名为“\u id”的整数主键列

更好的是,每个SQLite数据库表都有一个名为“rowid”的隐式列。您甚至不必拥有自己的整数主键列。只需使用rowid,如下所示:

SELECT rowid AS _id 
   ...
编辑以包括@CL对工作联接的解释


显然,对于许多类型的联接,此技巧都不起作用。不过,只要rowid在联接中的所有行上都是唯一的,它就可以正常工作。

您可以使用某个表中的
rowid
,只要它的值在查询结果的所有行上都是唯一的。这对许多连接都是正确的。@CL是的,你完全正确。我不知道怎么解释得这么清楚。答案已编辑。谢谢