【问题标题】:Inserting a decimal from textbox to sql从文本框插入小数到sql
【发布时间】: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 的异常。

这里有两个问题:

  1. 为什么不将有效的小数作为输入并进入 ELSE 块?
  2. 我不确定十进制列是否可以为空,如果不是,我的默认值替代方案是什么?

提前致谢。

【问题讨论】:

标签: c# asp.net sql-server decimal parameter-passing


【解决方案1】:

您使用的是int.TryParse 而不是decimal.TryParse。如果您输入任何带小数点的内容,即123.45,则int.TryParse 将失败。更新您的代码以使用decimal.TryParse

bool latresult = decimal.TryParse(latinput, out latoutput);

要回答您的第二个问题,如果十进制列被定义为可为空的,那么它们在数据库中也可以为空。如果不知道您的架构是什么样子,也不知道您的程序是什么样子,我无法确定您应该将什么传递给您的程序。

【讨论】:

  • 回答了我所有的问题。非常感谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多