我正在使用参数化查询在我的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命名空间中)可以帮助我解析参数化查询。 我可以进行更复杂的字符串替换或正则表达式,但我想收集一些知识。 我已经做了一些研究,但没有找到什么。