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

时间:2014-10-02 03:50:52

标签: android database sqlite

根据像http://reigndesign.com/blog/using-your-own-sqlite-database-in-android-applications/这样的博客,甚至在这里的一些评论中。

将数据库包含到项目中之前的第一步是将表的主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)
);

1 个答案:

答案 0 :(得分:0)

无需重命名数据库中的任何列。 SQL允许列别名,如下所示:

SELECT integer_primary_key AS _id 
   ...

唯一需要的是当您使用ListAdapter显示从数据库查询的游标内容时。您必须在游标中有一个名为“_id”的整数主键列才能执行此操作

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

SELECT rowid AS _id 
   ...

已编辑包含@ CL对工作联合的解释

显然,对于多种连接,这个技巧都行不通。但是,只要rowid在连接中的所有行上都是唯一的,它就可以正常工作。