查看准备好的声明

时间:2012-05-04 17:09:06

标签: c# sql

我使用以下情况:

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'); - 例如

参数输入后我得到这个“字符串”已经输入并移动到字符串??

我的想法是创建一个日志,所以需要获取已经填写的参数来生成系统日志!

2 个答案:

答案 0 :(得分:1)

查询将发送到具有@参数占位符的数据库。参数将单独发送到查询...即客户端不汇编已完成的SQL语句。

答案 1 :(得分:1)

如果您使用的是SQL Server,是否考虑过使用SQL Server Profiler?如果您不使用SQL Server,其他RBDMS系统应该有类似的工具......

将这种类型的日志记录添加到您的应用程序中可能会更省力,并且它还可以保证您看到实际发送到您的数据库的内容,并且您的日志记录代码没有意外地误解和错误记录查询。

如果您厌恶分析,如果我们讨论的是无法处理分析开销的生产数据库,那么这是合理的,您可以使用类似于以下内容的方式组装日志: / p>

var query = cmd.CommandText;

foreach (var p in cmd.Parameters)
{
    query = query.Replace(p.ParameterName, p.Value.ToString());
}