【问题标题】:iPhone and SQLite: How to handle the database connection with multiple classes?iPhone 和 SQLite:如何处理与多个类的数据库连接?
【发布时间】:2010-08-08 04:46:58
【问题描述】:

我对 SQLite 有一些疑问... 我的应用程序只使用一个表(封装在数据逻辑类中)来存储小数据,连接在didFinishLaunchingWithOptions 中打开并在applicationWillTerminate 中完成(是的,我知道在iOS4 中applicationWillTerminate 仅由iSO 调用,如果有必要,但我会在每次更改数据时写入数据库)。

现在我必须添加第二个表(和相关类),它将存储不同的数据(两个表之间没有连接)和正常大小(一天大约 1-2 行)。

我曾想过应用单例模式来共享连接和语句,但我读到出于性能原因,建议使用类局部变量来保持连接。

那么最佳做法是什么?单例还是两个打开的连接? 您会针对我的情况推荐什么解决方案?

谢谢

【问题讨论】:

  • 对于这么简单的数据库,手工编写SQLite代码完全是浪费时间。使用核心数据。更简单,很可能更快,并且更容易维护和发展。
  • 请添加为答案。

标签: iphone objective-c database performance sqlite


【解决方案1】:

存储在同一个数据库中时对我来说是单例。

少量数据不应很快成为性能瓶颈。

或者,当然,使用 CoreData。 :-)

【讨论】:

    【解决方案2】:

    对于这样一个简单的用途,由于@Eiko 提到的原因,单例可能是正确的答案。

    然而,这一切都引出了一个问题:你为什么不使用 Core Data?

    正确使用 SQLite 实际上是相当困难的,我见过许多非常有才华/经验丰富的工程师在没有意识到的情况下完全错误地使用它。更糟糕的是,扩展现有实现更加困难。直接使用 SQLite 添加并发确实真的困难(Core Data 工程师花费了大量的精力并运用了大量的专业知识来正确支持 SQLite 之上的并发)。

    对于这样一个简单的用途,Core Data 并不难学,它会给你留下一个更坚实、更通用的代码库。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-04-15
      • 2012-04-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-18
      • 2016-07-26
      相关资源
      最近更新 更多