将文本框中的小数插入 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 的异常。
这里有两个问题:
- 为什么不把有效的小数作为输入进入ELSE块?
- 我不确定 decimal 列是否可以为 null,如果不能,我的默认值替代方案是什么?
提前致谢。
您使用的是 int.TryParse
而不是 decimal.TryParse
。如果您输入带小数点的任何内容,即 123.45
,则 int.TryParse
将失败。更新您的代码以使用 decimal.TryParse
:
bool latresult = decimal.TryParse(latinput, out latoutput);
要回答您的第二个问题,如果 decimal 列定义为可为 nullable,则它们在数据库中可为 nullable。在不知道您的架构是什么样子或您的过程是什么样子的情况下,我无法确定您应该将什么传递到您的过程中。
我有一个 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块?
- 我不确定 decimal 列是否可以为 null,如果不能,我的默认值替代方案是什么?
提前致谢。
您使用的是 int.TryParse
而不是 decimal.TryParse
。如果您输入带小数点的任何内容,即 123.45
,则 int.TryParse
将失败。更新您的代码以使用 decimal.TryParse
:
bool latresult = decimal.TryParse(latinput, out latoutput);
要回答您的第二个问题,如果 decimal 列定义为可为 nullable,则它们在数据库中可为 nullable。在不知道您的架构是什么样子或您的过程是什么样子的情况下,我无法确定您应该将什么传递到您的过程中。