Я использую параметризованные запросы в своем коде C # для взаимодействия с базой данных Oracle. Что я могу сделать, чтобы записать выписки более читабельным образом?
Предположим, у меня есть параметризованный запрос, например:
INSERT INTO PERSON (ID, NAME, BIRTHDATE) VALUES (:id, :name, :birthdate)
В идеале я хотел бы видеть запись в журнале со всеми замененными параметрами, чтобы я мог скопировать и вставить инструкцию для последующего использования:
INSERT INTO PERSON (ID, NAME, BIRTHDATE) VALUES (23, ‘Mike’, TO_DATE('2003/07/09', 'yyyy/mm/dd')
Мой текущий подход - распечатать строку параметризованного запроса, а затем выполнить итерацию по всем параметрам и использовать ToString (). Это немного трудно читать, если есть много параметров. Это даст что-то вроде:
INSERT INTO PERSON (ID, NAME, BIRTHDATE) VALUES (:id, :name, :birthdate) [:id=23, :name=Mike, birthdate=2004/07/09 00:00:00]
Другим подходом, который я планирую, будет использовать функцию string.Replace () для замены заполнителей параметров. Но, может быть, есть лучший способ сделать это?
Заранее спасибо.
Редактировать 1:
Я подумал, что лучше привести пример кода.
Я использую параметризованные запросы в этой форме (Примечание: я использую log4net):
using (OracleConnection connection = new OracleConnection(connectionString))
using (OracleCommand command = new OracleCommand(statement, connection))
{
command.Parameters.AddWithValue(":id", id);
command.Parameters.AddWithValue(":name", name);
command.Parameters.AddWithValue(":birthdate", birthdate);
command.Connection.Open();
log.DebugFormat("Executing statement: {0}.", command.CommandText);
// there I would add some more code to iterate over
// the parameters and print them out
command.ExecuteNonQuery();
command.Connection.Close();
}
Я ищу способ выйти из оператора, который использует объект команды oracle. Мои нынешние подходы (см. Вопрос) пока не очень удовлетворительные, потому что не очень читабельные.
Я надеялся, что будет какой-то API (возможно, даже в пространстве имен OracleClient), который поможет мне разобрать параметризованный запрос. Я мог бы сделать более сложную замену строки или регулярное выражение, но я хотел собрать некоторые знания. Я уже провел некоторые исследования, но ничего не нашел.