如何在 Play 框架中打印出填写 Anorm SQL 语句

How do you print out filled in Anorm SQL statements in Play framework

如何使用 Anorm 打印出将要 运行 的 SQL 状态。

例子

SQL(s"SELECT $terms FROM $PERSON_TABLE WHERE name = {name}").on("name" -> "Bill")

打印给了我这个

SimpleSql(anorm.SqlQuery$$anon@1197b8ab,Map(name -> ParameterValue(Bill)),<function1>,false)

我想在服务器上查看 运行 的确切查询,

SELECT id, name, state FROM person WHERE name = "Bill";

我不想使用这样的插值

s"SELECT $terms FROM $PERSON_TABLE WHERE name = $name"

我需要能够看到所有转义字符以及 (') 中包含的内容以及 (") 中包含的内容

使用:

玩 2.4.1-Scala

谢谢,

亚当

您可以使用 Acolyte(我的框架)中的 debuging utility

import acolyte.jdbc.AcolyteDSL

AcolyteDSL.debuging() { implicit con =>
  // debug any JDBC execution within

  SQL"SELECT * FROM Test WHERE id = $id"
  // Will print the stmt prepared for
}
标准异常

sql.getFilledStatement(connection, true) API 似乎运行良好

使用准备好的语句试试这个:

val yourStmt = SQL(s"SELECT $terms FROM $PERSON_TABLE WHERE name = {name}").on("name" -> "Bill")
val pstmt = yourStmt.preparedStatement(con)
pstmt.foreach(p => println(p))

(使用内插字符串在 anorm 2.5.0 中为我工作)

我带着同样的问题来到这里,答案是 通过在 conf/application.conf 中添加此配置来为 SQL 语句启用日志记录:

db.default.logSql=true

参考