首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在grdb中获取完整的QueryInterfaceRequest sql字符串,包括字符串中的所有参数(GRDB.StatementArguments)

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

Stack Overflow用户
提问于 2019-04-22 05:59:12
回答 3查看 768关注 0票数 2

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

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

  1. 包括被sqlite裁剪用于注入的参数,您不能用问号手动替换这些参数。
  2. 您无法实现这些论点的真正价值,因为它们是私有的。
EN

回答 3

Stack Overflow用户

发布于 2021-04-22 08:02:55

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

代码语言:javascript
复制
// Prints all SQL statements
var config = Configuration()
config.prepareDatabase { db in
    db.trace { print($0) }
}
票数 2
EN

Stack Overflow用户

发布于 2019-04-23 11:52:51

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

可以将请求转换为SQLRequest实例: 尝试dbQueue.read { db在let .filter= wine .filter(列(“原产地”) == "Burgundy") .order(“价格”)让sqlRequest = try SQLRequest(db,request: request) print(sqlRequest.sql) // Prints SELECT *从葡萄酒原产地=?按价格订购(sqlRequest.arguments) //打印“勃艮第”}

票数 1
EN

Stack Overflow用户

发布于 2022-11-24 16:28:49

对于新版本的GRDB,答案是不同的。

取自如何将请求打印为SQL?

代码语言:javascript
复制
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"]
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55789804

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档