将空值插入sql server中的int列

我有一个子程序将记录插入sql server表。 代码:

public void Insert_Met(int Counts, char Gender) { Dictionary parameters = new Dictionary(); parameters.Add("@Counts", Counts); parameters.Add("@Gender", Gender); // run a stored procedure ExecuteNonQuery } 

我的其他行代码,

  int counts = Convert.ToInt32(numberUpdowncontrol1.Text); // from a control, maybe empty then it is null. Insert_Met(counts,'M'); 

我的问题是有时Counts可以为null,那么如何更改我的代码呢?

谢谢,

你可以用int? counts int? counts而不是int counts ,并检查方法中的值:

 public void InsertMet(int? counts, char gender) { Dictionary parameters = new Dictionary(); parameters.Add("@Counts", counts.HasValue ? counts.Value : (object)DBNull.Value); parameters.Add("@Gender", gender); // run a stored procedure ExecuteNonQuery } 

它是Windows窗体中的numericupdown控件。 我觉得很难将文本分配给int变量。 怎么改呢?

为了适当地设置上述计数值,您可以:

 int value = (int)numberUpdowncontrol1.Value; int? counts = !string.IsNullOrEmpty(numberUpdowncontrol1.Text) ? value : (int?)null; InsertMet(counts, 'M'); 

以下语句将始终生成非null值

 int counts = Convert.ToInt32(null); // Result is 0 
 int count = !(count == 0)? count ? (object)DBNull.Value 

– 如果count不为零,则将计数值保存到数据库 – 如果为零保存