【问题标题】:How do I determine whether a database connection is read/write or read-only in GRDB?如何确定数据库连接在 GRDB 中是读/写还是只读?
【发布时间】:2019-07-19 00:20:09
【问题描述】:

在 GRDB 中,我可以使用

创建只读数据库连接
try dbPool.read { db in

我可以创建读写数据库连接

try dbPool.write { db in

在每种情况下,我都可以使用 db 作为参数从闭包中调用一个函数。在 GRDB 中,只读数据库连接可以在不同的线程中并行运行。写数据库连接阻塞数据库。

我想在某些函数中使用一个模式:

  • 选择根据某些属性过滤的记录。
  • 如果找到记录,请将其返回。
  • 如果未找到记录,请使用这些属性创建默认占位符记录。
  • 如果数据库是读写的,保存默认占位符并返回。
  • 如果数据库是只读的,只需返回占位符

有没有办法确定数据库是否是只读的?查看http://groue.github.io/GRDB.swift/docs/4.1/Classes/Database.html 处的参考文档,除了错误处理之外,我没有看到一种简单的方法来确定这一点。

如果数据库是只读的,我可以尝试保存在函数中并捕获错误。

【问题讨论】:

    标签: grdb


    【解决方案1】:

    有没有办法确定数据库是否为只读?

    不,没有任何公开方式可以获取此信息。有可能,但功能请求尚未显示。

    如果数据库是只读的,我可以尝试保存在函数中并捕获错误。

    正确。

    我想在某些函数中使用一个模式 [...]

    您描述的模式看起来像是针对简单写入的过早优化。您是否注意到实际的性能问题?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-05-23
      • 1970-01-01
      • 1970-01-01
      • 2016-12-09
      • 2013-12-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多