#java #sql #groovy
#java #sql #groovy
Вопрос:
Мне нужно протоколировать мои подготовленные sql-запросы в groovy.
Чтобы избежать внедрения sql и иметь автоматические строковые кавычки (это важно), я использовал этот дизайн:
String name = "Bobby"
Integer status = 1
def query = 'UPDATE my_tbl SET status=? WHERE name=?';
sql.execute (query, [status, name])
Как я могу получить подготовленный sql-запрос с моими параметрами?
Могут быть другие решения?
Ответ №1:
Я предполагаю, что вы хотите сделать, это записать строку запроса с ?
параметрами, замененными их значениями? Я не знаю, как это сделать в журналах приложений, но в вашей базе данных, вероятно, есть журнал запросов, который может это показать.
Если вы используете перегруженную версию 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)
Комментарии:
1. Да, вы правильно меня поняли. Но в приложении я могу разделять журналы по файлам в области приложения с одним вызовом. В журналах базы данных a не может этого сделать. Я думаю, что решение одно — создать перегруженный класс. Спасибо!