【问题标题】:iPhone Dev - Trying to access every row of a sqlite3 table sequentiallyiPhone Dev - 尝试按顺序访问 sqlite3 表的每一行
【发布时间】:2011-10-10 11:08:12
【问题描述】:
这是我第一次使用 SQL,所以这听起来很基础。我正在制作一个创建和使用 sqlite3 数据库的 iPhone 应用程序(我正在使用 libsqlite3.dylib 数据库以及导入“sqlite3.h”)。我已经能够正确地在其中创建数据库和表,但现在我需要知道从中取回数据的最佳方法。
我将如何检索表中的所有信息?我能够按照表格中的顺序访问每一行,这一点非常重要。我想做的(如果有帮助的话)是从一行中的各个字段中获取所有信息,将所有信息放入一个对象中,然后将该对象存储在一个数组中,然后对下一行执行相同的操作,和下一个,等等。最后,我应该有一个数组,其元素数量与我的 sql 表中的行数相同。谢谢。
【问题讨论】:
标签:
iphone
objective-c
database
sqlite
【解决方案1】:
我的 SQL 生锈了,但我认为您可以使用 SELECT * FROM myTable 然后遍历结果。如果您不想从表中检索所有元素(例如由于内存问题),也可以使用LIMIT/OFFSET(1) 结构。
(1) 请注意,根据您的用例,这可能会执行异常糟糕的操作。查看here了解更多信息...
【解决方案2】:
我将如何检索表中的所有信息?它是
非常重要的是我能够按顺序访问每一行
在表中。
这不是 SQL 的工作方式。就 SQL 而言,行不会以特定顺序保存在表中。查询返回的行的顺序由查询中的 ORDER BY 子句确定,例如ORDER BY DateCreated 或 ORDER BY Price。
但是 SQLite 有一个可以用于此目的的 rowid 虚拟列。它反映了插入行的顺序。除了它可能会随着真空而改变。如果你将它设为 INTEGER PRIMARY KEY,它应该保持不变。
order by rowid