我有一个包含十进制值的sql列.lets表示来自文本框的纬度。
Latitude decimal(20,16),
现在我想检查文本框是否为空或包含非小数字符,如果是,则应插入默认值,如' 0'或者如果一切都到位..只需插入小数。
我试过以下内容:
int latoutput;
string latinput = txtLatitude.Text;
bool latresult = int.TryParse(latinput, out latoutput);
if(latresult)
{
cmd.Parameters.AddWithValue("@Latitude", Convert.ToDecimal(latinput));
}
else
{
cmd.Parameters.AddWithValue("@Latitude", null);
}
执行时,即使文本框包含有效的小数,它也会继续执行ELSE块并抛出异常,但未提供@Latitude。
这里有两个问题:
提前致谢。
答案 0 :(得分:4)
您正在使用int.TryParse
而不是decimal.TryParse
。如果输入带小数点的任何内容,即123.45
,则int.TryParse
将失败。更新您的代码以使用decimal.TryParse
:
bool latresult = decimal.TryParse(latinput, out latoutput);
要回答第二个问题,如果将十进制列定义为可为空,则十进制列在数据库中可以为空。我不能确定你应该在你的程序中传递什么,而不知道你的模式是什么样的,也不知道你的程序是什么样的。