【发布时间】:2023-03-26 01:35:01
【问题描述】:
我有一个包含十进制值的 sql 列。让我们说来自文本框的纬度。
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 的异常。
这里有两个问题:
- 为什么不将有效的小数作为输入并进入 ELSE 块?
- 我不确定十进制列是否可以为空,如果不是,我的默认值替代方案是什么?
提前致谢。
【问题讨论】:
-
你也可以看看这篇文章。 blogs.msmvps.com/jcoehoorn/blog/2014/05/12/…
-
请注意,您会收到
@Latitude was not provided错误,因为您应该传递DBNull.Value而不是null
标签: c# asp.net sql-server decimal parameter-passing