如何在grdb中获取完整的QueryInterfaceRequest sql字符串,包括字符串中的所有参数(GRDB.StatementArguments)

时间:2019-04-22 05:59:13

标签: swift grdb

我需要获取查询界面的完整sql查询才能将其保存为用户默认设置,但我找不到此功能

更新: 为了获得完整的查询字符串:

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

  2. 您无法获得这些参数的真实价值,因为它们是私有的

2 个答案:

答案 0 :(得分:0)

How do I print a request as 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"]
}

答案 1 :(得分:0)

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

// Prints all SQL statements
var config = Configuration()
config.prepareDatabase { db in
    db.trace { print($0) }
}