如何确定数据库连接在GRDB中是读/写还是只读?

时间:2019-07-19 00:20:09

标签: grdb

在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上的参考文档,除了错误处理之外,我没有找到一种简单的方法来确定这一点。

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

1 个答案:

答案 0 :(得分:0)

  

是否可以确定数据库是否为只读数据库?

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

  

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

正确。

  

我有一个想在某些功能中使用的模式[...]

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

相关问题