我有一个子程序将记录插入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,那么如何更改我的代码?
谢谢,
答案 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不为零 - 如果是零保存