查看准备好的声明
本文关键字:声明 准备好 | 更新日期: 2023-09-27 18:33:08
我正在使用以下情况:
cmd.CommandText = "insert into city (id, code, name, uf) values ??(@ id, @ code, @ name, @ uf);"
我想知道在提供给参数的格式字符串之后,什么会让我进入命令
情况:
insert into city (id, code, name, uf) values ??(5, 5, 'BIG COUNTRY', 'MS');
- 例如
在参数输入后,我已经输入了这个"字符串"并移动到一个字符串??
我的想法是创建一个日志,所以需要获取已经填写的参数来生成系统日志!
如果您使用的是 SQL Server,您是否考虑过改用 SQL Server Profiler? 如果您没有使用SQL Server,其他RBDMS系统应该有类似的工具...
这可能比将这种类型的日志记录添加到应用程序中要省力,并且还可以保证您看到实际发送到数据库的内容,并且日志记录代码不会意外地误解和错误地记录查询。
如果您厌恶性能分析(如果我们谈论的是无法处理性能分析开销的生产数据库,这是合理的),则可以使用类似于以下内容的内容来组合日志:
var query = cmd.CommandText;
foreach (var p in cmd.Parameters)
{
query = query.Replace(p.ParameterName, p.Value.ToString());
}
查询将发送到数据库,并带有@
参数占位符。参数将单独发送到查询...即客户端不组装完整的 SQL 语句。