use*_*469 1 .net c# sql sqlparameter
如果我有这个变量:
int value = 4;
Run Code Online (Sandbox Code Playgroud)
这将作为一些sql参数传递:
SqlCommand sqlcmd = new SqlCommand();
sqlcmd.Parameters.Add(new SqlParameter("@value", value));
Run Code Online (Sandbox Code Playgroud)
它会被转换为字符串并自动处理吗?或者它可能会导致一些麻烦?即.当我这样做:
sqlcmd.ExecuteNonQuery();
始终提供正确的类型,尤其int是危险的.
来自MSDN:
使用
SqlParameter构造函数的此重载指定integer参数值时请小心.因为此重载采用Object类型的值,所以当值为零时,必须将整数值转换为Object类型,如下面的C#示例所示:
Parameter = new SqlParameter("@pname", (object)0);
Run Code Online (Sandbox Code Playgroud)
如果不执行此转换,编译器会假定您正在尝试调用
SqlParameter (string, SqlDbType)构造函数重载.
因此,如果要使用字符串参数,请将其转换为正确的类型:
sqlcmd.Parameters.Add(new SqlParameter("@value", value.ToString()));
Run Code Online (Sandbox Code Playgroud)
要么
sqlcmd.Parameters.AddWithValue("@value", value.ToString());
Run Code Online (Sandbox Code Playgroud)
或(与类型)
var p = new SqlParameter("@value", typeof(string));
p.Value = value.ToString()
sqlcmd.Parameters.Add(p);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2580 次 |
| 最近记录: |