将空值插入sql server中的int列

时间:2012-06-13 16:05:04

标签: c# sql-server

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

    public void Insert_Met(int Counts, char Gender)
    {
        Dictionary<string, object> parameters = new Dictionary<string, object>();
        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,那么如何更改我的代码?

谢谢,

3 个答案:

答案 0 :(得分:9)

您可以使用int? counts代替int counts,并检查方法中的值:

public void InsertMet(int? counts, char gender)
{
    Dictionary<string, object> parameters = new Dictionary<string, object>();
    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');

答案 1 :(得分:0)

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

int counts = Convert.ToInt32(null); // Result is 0

答案 2 :(得分:0)

int count = !(count == 0)? count ? (object)DBNull.Value

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