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

Swift 如何在grdb中获取完整的QueryInterfaceRequest sql字符串,包括字符串中的所有参数(grdb.StatementArguments),swift,grdb,Swift,Grdb,我需要获取查询接口的完整sql查询,以便以用户默认值保存它们,但我找不到此功能 更新: 为了实现完整的查询字符串: 包括sqlite为注入修剪的参数,您不能手动用问号替换这些参数 您无法实现这些参数的真正价值,因为它们是私有的 常见问题解答说: 您可以将请求转换为SQLRequest实例: try dbQueue.read { db in let request = Wine .filter(Column("origin") == "Burgundy")

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

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

  • 包括sqlite为注入修剪的参数,您不能手动用问号替换这些参数

  • 您无法实现这些参数的真正价值,因为它们是私有的

  • 常见问题解答说:

    您可以将请求转换为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"]
    }
    

    最新GRDB中有一个
    跟踪功能

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

    首先谢谢你的回答。我知道这一点,但为了实现完整的查询字符串,包括sqlite为注入而修剪的参数,您不能用问号manualy替换这些参数。另一个缺点是您无法实现这些参数的真实值,因为它们是privateOK@nova。下次你问关于SO的问题时,请确保你说出了你已经知道的内容,以便问题和答案都更加集中?这将帮助所有人,不仅仅是你。现在你的评论是关于其他事情的。我建议你问另一个问题,或者,如果某个功能缺失,就打开一个Github问题。这一点很好。我会更新这个问题,我从问这个问题的时候就不知道了。