将文本框中的小数插入 sql

Inserting a decimal from textbox to sql

我有一个 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. 我不确定 decimal 列是否可以为 null,如果不能,我的默认值替代方案是什么?

提前致谢。

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

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

要回答您的第二个问题,如果 decimal 列定义为可为 nullable,则它们在数据库中可为 nullable。在不知道您的架构是什么样子或您的过程是什么样子的情况下,我无法确定您应该将什么传递到您的过程中。