C# SqlParameter设置值为0数据库实际为null的原因

以前我也发现了这个问题,当时 我是想通过SqlParameter插入一个int数据到数据库,类似下面这样

 

1   MySqlParameter[] parameters = new MySqlParameter[]
2   {
3               new MySqlParameter("@order",0)
4   }

 

但是执行后,会发现数据库显示为null,当时没去细究原因,通过声明了一个变量来解决了。

1 int order = 0; 
2 
3 MySqlParameter[] parameters = new MySqlParameter[]
4   {
5               new MySqlParameter("@order",order)
6   }

 

今天又遇到了类似的问题

 后面查了一下资料,发现平常我们在使用SqlParameter时,使用最多的是通过下面的构造函数去创建

1 public SqlParameter (string parameterName, object value);

 

而第二个参数是object类型,所以当系统无法推断类型时,会将0设置成null,这也就是为什么在前面的解决办法中,声明一个变量就可以解决。

 

既然 知道了原因,我们通过下面的方式构造,就可以解决问题。

1  MySqlParameter[] parameters = new MySqlParameter[]
2  {
3              new MySqlParameter("@order",MySqlDbType.Int32){ Value = 0}
4  };

 

posted @ 2025-01-23 15:17  zhaotianff  阅读(73)  评论(0)    收藏  举报