public String getTexto() {
return this.textTo;
}
当我运行此代码时,看起来好像我的sql命令的参数没有被其实际值替换。我希望能够在编译命令时查看其值,以便查看是否发送了正确的命令。有什么想法吗?
答案 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.