如何在 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
参考
- 在 PostgrePlay Framework v2.6.17 上测试SQL
- 似乎是 the same for v2.8.x(最新的截至 2022 年 1 月);
- 对于旧版本,请检查 Where to see the logged sql statements in play2?
如何使用 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
参考
- 在 PostgrePlay Framework v2.6.17 上测试SQL
- 似乎是 the same for v2.8.x(最新的截至 2022 年 1 月);
- 对于旧版本,请检查 Where to see the logged sql statements in play2?