我需要在 groovy 中记录我准备好的 sql 查询。
为了避免 sql 注入(inject)并具有自动字符串引号(这很重要),我使用了这种设计:
String name = "Bobby"
Integer status = 1
def query = 'UPDATE my_tbl SET status=? WHERE name=?';
sql.execute (query, [status, name])
我如何使用我的参数准备好sql查询? 可能还有其他解决方案吗?
最佳答案
我猜您想要做的是记录查询字符串,并将 ?
参数替换为它们的值?我不知道如何在应用程序日志中执行此操作,但您的数据库可能有一个可以显示它的查询日志。
如果您使用 execute
的重载版本,您可以获得非常接近您所要求的结果
Map params [status: 1, name: "Bobby"
def query = 'UPDATE my_tbl SET status=? WHERE name=?';
log.debug "query: $query, params: $params"
sql.execute(params, query)
关于java - 在 groovy 中记录准备好的 sql 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55039641/