iPhone 上 SQLite 的最佳 Cocoa/Objective-C 包装器库 [关闭]

Posted

技术标签:

【中文标题】iPhone 上 SQLite 的最佳 Cocoa/Objective-C 包装器库 [关闭]【英文标题】:Best Cocoa/Objective-C Wrapper Library for SQLite on iPhone [closed] 【发布时间】:2010-10-13 01:22:01 【问题描述】:

我正在为 iPhone 开发并且正在寻找一个好的 Cocoa/Objective-C 库来使用 SQLite。我不想使用标准的过程 SQLite C API。我在 Objective-C 部分下的 sqlite.org 看到了选项,但我不确定在库 API 设计、稳定性和功能方面哪个是最好的。我想使用一些正在积极开发中的东西,希望会存在一段时间。有人根据使用经验提出建议吗?

谢谢

【问题讨论】:

核心。数据。每一个。时间。 目前Coredata是最好的选择。 【参考方案1】:

我个人使用FMDB,最后一次更新是昨天。

【讨论】:

github.com/ccgus/fmdb【参考方案2】:

我找到的最简单的就是这个https://github.com/misato/SQLiteManager4ios

Ester Sanchez 的 SQLiteManager。

使用基本是这样的:

NSArray *results = [dbManager getRowsForQuery:@"SELECT * FROM table WHERE id = 1"];

results 是一个包含字典的数组。每个字典都是一个返回的行,其中键是表中每一列的名称。

之后你可以这样做:

NSDictionary *aPerson = [results objectAtIndex:0];
NSString *firstName = aPerson[@"firstName"];
NSString *email = aPerson[@"email"];

【讨论】:

好的,这看起来很棒。为什么没有选票?嗯,FMDB vs SQLiteManager4iOS ... 不知道,我不认为这个被广泛使用。我都试过了,我绝对更喜欢后者。 想象一下一个有 10000 行和 10 列的表格会发生什么,每个表格有 255 个字符...... @Christoph 如果您甚至可以想出一个需要一次获取 10000 行而不进行过滤的情况,我不明白您为什么要诚实地寻找一个简单的 SQLite 包装器... @Accatyyc 我不太明白你的评论。我一直在寻找 SQLite 包装器——我总是会选择 CoreData。但我确信加载 10000 行 10 列 255 字节会导致 24MB 内存块迟早会爆炸。大量项目(联系人、图像等)是 QA 最喜欢的测试用例,而且它总是会爆炸。这就是我发表评论的原因;该解决方案还没有准备好。【参考方案3】:

我也是 FMDatabase 的粉丝,尽管我不得不定制我自己的版本。我的应用程序使用我编写的名为 ArchDBObject 的层,它透明地将对象与数据库表示进行转换;我正在考虑以某种形式发布它,但我还没有真正决定如何发布。

无论如何,FMDatabase 都可以在https://github.com/ccgus/fmdb 获得。

【讨论】:

项目已移至此处:github.com/ccgus/fmdb【参考方案4】:

FMDB 很不错,因为它是无需处理 C 调用和类型转换的最简单的方法,同时仍让您可以完全访问 SQL。

我通常不喜欢对象关系包装器的一点是,您与正在生成的 SQL 距离太远,而这会导致性能开始受到影响。

【讨论】:

【参考方案5】:

过去几个小时我都在研究这些选项——这些选项还没有投入生产,所以 YMMV。

我找到的最轻的包装纸在这里:

http://th30z.netsons.org/2008/11/objective-c-sqlite-wrapper/

我不知道它是否有正式名称。它只是 1 个类,它抽象了 SQLite api 的讨厌,同时保留了直接使用 SQL 的价值。假设您已经了解 SQL,学习曲线是 5 分钟。由于它是如此之小,我可以想象它很容易修复任何可能出现问题的地方。

【讨论】:

该 URL 似乎不再有效...【参考方案6】:

如果您愿意,您还可以查看以下存储库,它提供了一组可用于创建 SQL 语句的类,并提供了一种处理 SQLite 数据库连接的简单方法。它位于https://github.com/ziminji/objective-c-sql-query-builder

【讨论】:

【参考方案7】:

我在 FDBM 之上有一个简单的 ORM http://code.google.com/p/chibiorm/。

有了它,您可以根据需要使用原始 SQL,将任何 SQL 作为字典列表返回,或者使用漂亮的 OO 样式。

【讨论】:

以上是关于iPhone 上 SQLite 的最佳 Cocoa/Objective-C 包装器库 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

获取 SQLite 上最后插入行的 ID 的最佳方法

在 iPhone/Cocoa 上复制 OpenSSL smime 命令

在 iPhone 上将多行插入 sqlite db 的最快方法

无法将 sqlite 文件从应用程序包复制到文档目录:获取(Cocoa 错误 260)

iPhone上SQLite时间戳的错误时间

ASP中的AES256加解密