没有使用C#sql命令参数?

时间:2019-02-08 18:47:56

标签: c# sql

public String getTexto() {
    return this.textTo;
}

当我运行此代码时,看起来好像我的sql命令的参数没有被其实际值替换。我希望能够在编译命令时查看其值,以便查看是否发送了正确的命令。有什么想法吗?

3 个答案:

答案 0 :(得分:2)

答案基于我的假设,即您期望查询语句(字符串)发生变化。该假设基于您的措辞以及代码语句中的最后一句话。

  

Console.WriteLine(command.CommandText);

查询文本未更改,即。查询文本中的参数不会替换为分配的参数值。将参数及其值与查询文本一起 发送到DBMS以执行。在Sql Server中,如果要使用Profiler来分析Sql Server实例,则可以看到此信息。


作为旁注,我不建议您使用AddWithValue。另请参见Can we stop using AddWithValue() already?。只需使用Add。同样,您应该给参数起有意义的名称,例如“ @errorLevel”,这样可以使调试更加容易。

command.Parameters.Add("@errorLevel", SqlDbType.Int).Value = errorLevel;

在调用Add时,不必在参数名称前加上“ @”作为前缀,否则,方法将完成此操作。虽然这被认为是好的做法,但这是一个见解。

答案 1 :(得分:1)

在为参数分配值时,命令字符串不会更改。要查看参数的实际值,可以在分配参数后获取值

 foreach (SqlParameter item in command.Parameters)
 {
    Console.WriteLine(item.ParameterName + "=" + item.Value);
 }

这将显示实际值

答案 2 :(得分:0)

不要使用@数字,而是命名为..如@ parmReview,@ parmError等...,那么NAMED值就在您的

command.Parameters.AddWithValue( "parmReview", cli.reviewed.Checked)
command.Parameters.AddWithValue("parmError", errorLevel);
etc.