2

我需要获取查询接口的完整 sql 查询,以便将它们保存在用户默认值中,但我找不到此功能

更新:为了实现完整的查询字符串:

  1. 包括被 sqlite 修剪以进行注入的参数,您不能手动用问号替换这些参数。

  2. 您无法实现这些论点的真正价值,因为它们是私有的

4

2 回答 2

2

trace最新的GRDB中有一个函数:

// Prints all SQL statements
var config = Configuration()
config.prepareDatabase { db in
    db.trace { print($0) }
}
于 2021-04-22T08:02:55.483 回答
1

如何将请求打印为 SQL?常见问题解答 说:

您可以将您的请求转换为 SQLRequest 实例:

try dbQueue.read { db in
    let request = Wine
        .filter(Column("origin") == "Burgundy")
        .order(Column("price")

    let sqlRequest = try SQLRequest(db, request: request)
    print(sqlRequest.sql)
    // Prints SELECT * FROM wine WHERE origin = ? ORDER BY price
    print(sqlRequest.arguments)
    // Prints ["Burgundy"]
}
于 2019-04-23T11:52:51.890 回答