iOS SQLite中的行编号

时间:2012-08-05 12:43:40

标签: ios database sqlite numbers row

在我的应用程序的SQLite表中,我需要一个行号为1,2,3,4,5的列(或者能够获取每行的行号)。现在我一直删除行并添加行,所以每次添加新行时我都不能放一个数字,因为当删除行时,编号会搞砸。那么有没有办法获取行号,或创建一个特殊的列作为行号?如果是这样,怎么样?

4 个答案:

答案 0 :(得分:0)

如果使用ROWID这是一个自动递增的数字,您可以通过选择所有数据来计算行数,按ROWID排序,然后使用返回结果中的索引作为行号。如果您正在创建一些数据模型类,则可以将其传递给其初始化程序。

如果这不能达到你想要的效果,那么如何添加更多关于你想要做的事情的细节呢。你确定需要一个行号吗?

答案 1 :(得分:0)

当您删除行 - 数字方案中出现“漏洞”的行时,您不希望更改数据库中的所有现有记录。

SQLite已经通过ROWID支持您想要的内容。当您进行选择查询时,只需指定它以对ROWID进行排序,并且所有返回的记录将按正确的顺序排序,您可以按顺序迭代它们。

请参阅此页:http://www.sqlite.org/autoinc.html

FWIW,肯定有一些地方你更喜欢直接使用SQLite而不是核心数据。然而,这些是罕见的情况。一般来说,首先要达到核心数据,只有当CD无法满足您的需求时才回退到SQLite。

答案 2 :(得分:0)

只需为表格使用自动增量主键即可。然后总会有一个唯一的标识符,您可以访问记录。

答案 3 :(得分:0)

如果您希望每次添加和删除行时都重置此项,那么这应该是您表中的列吗?

例如,如果您只想从表中选择第20行,则可以使用SQL的LIMITOFFSET子句选择特定行,例如,检索从news表开始的第20行,我可以这样做:

SELECT * FROM news LIMIT 1 OFFSET 19;

或者,如果您真的想要一个包含此行号信息的列,您可以添加一个新的INTEGER列类型,然后编写一个Objective C方法来更新该列的值,并调用该方法您在结果集中删除或插入行的时间。

有很多方法可以解决您的问题。你必须解释你想要完成的任务,以便我们帮助你。典型的AUTOINCREMENT答案是我们通常用于表键的答案,但听起来你不希望这是你表的关键,而是其他的东西。