标签: grdb

使用 GRDB,使用原始 sql 但以方便的形式使用结果?

这是您无法使用 GRDB 中的便利构建器构建的示例 SQL 查询...

let q = "job.id, job.name, job.city, 

ifnull(jobcategory.value, 'no category'),
ifnull(jobpriority.value, 'no priority'),

from job  

left join jobcategory on job.category = jobcategory.id
left join jobpriority on job.priority = jobpriority.id

where job.user = 13"
Run Code Online (Sandbox Code Playgroud)

(事实上​​,我做了一个例子,你也不能在任何旧的、支持较少的 iOS Swift SQL 库中构建)

然后像

for ..
 let id = ..
 let name = ..
 let city = ..
 let category = ..
 let priority = ..
Run Code Online (Sandbox Code Playgroud)

我听说使用 GRDB,您实际上可以使用原始 SQL(即实际上甚至不使用 GRDB 的查询构建器),但是,在结果中仍然使用便利消耗*,注意类型等。

如果是这样,实际上您如何在示例中执行此操作?

swift grdb

5
推荐指数
1
解决办法
506
查看次数

Swift GRDB写入数据库错误“试图写入只读数据库”

我正在尝试写入我创建的报价数据库。如果用户选择“收藏夹”按钮,它将在SQLITE数据库的“收藏夹”列中添加1(或true)值。由于某些原因,我无法写入数据库,也无法执行以下代码:

    @IBAction func addFavorite(_ sender: Any) {
        var configuration = Configuration()
        configuration.readonly = false
        let dbPath = Bundle.main.path(forResource: "data", ofType: "db")!
        let dbQueue = try! DatabaseQueue(path: dbPath, configuration: configuration)

        try! dbQueue.inDatabase { db in
            try db.execute("""
UPDATE quotes SET favorite = 1 WHERE quote = ?;
""",
                                           arguments: [quoteLabel.text])
    }
Run Code Online (Sandbox Code Playgroud)

我希望将结果写入数据库,并将1放入“喜欢的”列中,但不幸的是事实并非如此。我收到此错误:

线程1:致命错误:“尝试!” 表达式意外引发错误:带有语句UPDATE quotes SET favorite = 1 WHERE quote = ?参数的SQLite错误8 [“节制是原因的更强更清晰的解释。”]:尝试编写只读数据库

我已经尝试chmod 755了数据库,但是也没有用。我想念什么吗?

database sqlite swift grdb

3
推荐指数
1
解决办法
551
查看次数

标签 统计

grdb ×2

swift ×2

database ×1

sqlite ×1