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

50pmv0ei  于 2022-11-28  发布在  Swift
关注(0)|答案(3)|浏览(129)

我需要获得完整的SQL查询的查询接口,以保存在用户默认值,但我找不到这个功能
更新:为了获得完整查询字符串:
1.包括由sqlite修剪以进行注入的参数,您不能手动将这些参数替换为问号。
1.你不能实现那些论点的真实的价值,因为它们是私有的

6tdlim6h

6tdlim6h1#

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

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

h43kikqp2#

如何将请求打印为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"]
}
5ktev3wc

5ktev3wc3#

对于较新版本的GRDB,答案是不同的。
摘自如何将请求打印为SQL?:

try dbQueue.read { db in
    let request = Player.filter(Column("email") == "arthur@example.com")
    let statement = try request.makePreparedRequest(db).statement
    print(statement) // SELECT * FROM player WHERE email = ?
    print(statement.arguments) // ["arthur@example.com"]
}

相关问题