1

我有一个将记录插入到 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 可以为空,那么如何更改我的代码?

谢谢,

4

3 回答 3

11

您可以使用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');
于 2012-06-13T16:07:08.327 回答
0

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

int counts = Convert.ToInt32(null); // Result is 0
于 2012-06-13T16:33:53.277 回答
0
int count = !(count == 0)? count ? (object)DBNull.Value

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

于 2017-07-24T15:21:53.367 回答