从文本框插入十进制到sql

时间:2015-09-14 16:27:03

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

我有一个包含十进制值的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。

这里有两个问题:

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

1 个答案:

答案 0 :(得分:4)

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

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

要回答第二个问题,如果将十进制列定义为可为空,则十进制列在数据库中可以为空。我不能确定你应该在你的程序中传递什么,而不知道你的模式是什么样的,也不知道你的程序是什么样的。

相关问题