【问题标题】:Should I open() and close() my SQL database constantly or leave it open?我应该不断地打开()和关闭()我的 SQL 数据库还是让它保持打开状态?
【发布时间】:2011-09-14 10:28:07
【问题描述】:

我正在创建一个使用 SQL 数据库存储数据的应用程序。应用程序的设计方式将根据应用程序运行时的用户操作每 3 分钟左右更新一次新数据。

在我看到的教程中,他们建议您在更改数据库后关闭数据库(这在资源方面是“昂贵的”)。

在我的应用程序期间保持打开状态更好,因为它会频繁更新,还是应该在每次更改后立即运行 close() 方法?

我想我担心的是,不断地打开和关闭它会比一直打开它会消耗更多的资源。

【问题讨论】:

    标签: android sql database database-connection


    【解决方案1】:

    我曾经试图让一个连接保持打开状态——我用它来填充中继器或其他东西——现在不记得了。

    在程序的后面,我还需要使用连接——我想我有它,所以当用户单击转发器中的父项时,会弹出一个详细 div,其中包含该项的更多信息。这产生了一个错误——类似于“无法在打开的连接上打开()”。

    我认为该错误可能可以通过另一种方式避免(例如检查我试图打开的连接是否已经打开),但当我想到它时,我意识到我必须将其作为标准做法在我的整个应用程序中,这似乎工作量太大,所以我只是将每次使用后始终关闭我的连接作为标准做法。

    连接保留在连接池中——我不是这方面的专家——但如果对性能感到好奇,我想我会记住这一点,就多次打开连接的成本而言—— - 不管你的情况需要什么。

    另一个想法是您的数据库管理员可能能够强制关闭所有打开的连接,或者数据库可能由于其他原因而关闭。如果您不是 dba,您可能会考虑依赖于您无法长期控制的事物(例如保持连接打开)的风险/收益。

    【讨论】:

    • DBA?我们还在谈论 Android 吗?
    • 数据库管理员
    【解决方案2】:

    对于当今的处理器,甚至电话处理器来说,三分钟是永恒的。我会关闭它并每次打开它。总比把手悬在“以太”中要好。

    【讨论】:

      【解决方案3】:

      假设您在一个线程中背靠背地执行多个数据库操作。我会保持数据库开放以执行这些操作。但是在完成大量工作后关闭数据库。

      【讨论】:

        【解决方案4】:

        我认为这个问题的答案还取决于访问数据库的应用程序类型。

        如果你重新查询数据库很多 在这种情况下,您可以保持数据库打开。

        是否有其他应用程序访问同一数据库? 如果存在并发或阻塞问题的风险,最好在完成读取/写入数据库后关闭数据库。

        看看下面的网址

        When to close db connection on android? Every time after your operation finished or after your app exit

        感谢迪帕克

        【讨论】:

          【解决方案5】:

          如果你问我到目前为止我所读到的关于 android 的所有内容,通常最好在你进行修改后立即关闭它。

          如果可以的话,我认为最好的做法是实际制作和注册内容提供商。 它有它的价格,但我相信你得到的比你付出的要多得多。 您可以使用内容提供者完成几乎所有的事情,Android 门户上的记事本示例非常适合学习如何实现它。它负责数据库同步和打开/关闭它。所以也许可以调查一下。

          【讨论】:

          • 查看记事本教程,然后按照示例进入记事本项目。 developer.android.com/resources/tutorials/notepad/index.html
          • 它与 sqlite 助手实现有点不同(作为适配器或只是一个简单的数据库,您将通过方法直接访问)。我相信内容提供商是一个非常好的解决方案。在用数据库做了很多项目并遇到并发问题,没有关闭数据库或运行到关闭的数据库等之后,使用不同的设计模式来解决这些问题,我仍然发现内容提供者是最好的解决方案,它工作得很好,所以对于我制作的所有应用程序而言。尽管它的开销有点大。
          猜你喜欢
          • 1970-01-01
          • 2011-06-19
          • 2011-05-25
          • 1970-01-01
          • 1970-01-01
          • 2016-09-09
          • 2012-12-04
          • 2023-03-07
          相关资源
          最近更新 更多