1

我正在使用以下情况:

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

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

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

4

2 回答 2

1

查询被发送到带有@参数占位符的数据库。参数单独发送到查询...即客户端不组装完整的 SQL 语句。

于 2012-05-04T17:14:00.833 回答
1

如果您使用的是 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());
}
于 2012-05-04T17:28:28.297 回答