C# 将十进制从文本框插入sql
我有一个sql列,它保存一个十进制值。比如说,纬度是从一个文本框来的C# 将十进制从文本框插入sql,c#,asp.net,sql-server,decimal,parameter-passing,C#,Asp.net,Sql Server,Decimal,Parameter Passing,我有一个sql列,它保存一个十进制值。比如说,纬度是从一个文本框来的 Latitude decimal(20,16), 现在我想检查textbox是否为空或包含非十进制字符,如果是..它应该插入一个像“0”这样的默认值,或者如果所有内容都已就绪..只需插入十进制 我尝试了以下方法: int latoutput; string latinput = txtLatitude.Text; bool latresult = int.TryParse(latinput, out latoutput);
Latitude decimal(20,16),
现在我想检查textbox是否为空或包含非十进制字符,如果是..它应该插入一个像“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的异常
这里有两个问题:
提前感谢。您使用的是
int.TryParse
而不是decimal.TryParse
。如果输入任何带有小数点的内容,即123.45
,则int.TryParse
将失败。更新您的代码以使用十进制。TryParse:
bool latresult = decimal.TryParse(latinput, out latoutput);
要回答第二个问题,如果十进制列定义为可空,则它们在数据库中可以为空。如果不知道模式和过程的外观,我无法确定应该传递到过程中的内容。您使用的是
int.TryParse
而不是decimal.TryParse
。如果输入任何带有小数点的内容,即123.45
,则int.TryParse
将失败。更新您的代码以使用十进制。TryParse:
bool latresult = decimal.TryParse(latinput, out latoutput);
要回答第二个问题,如果十进制列定义为可空,则它们在数据库中可以为空。在不知道模式和过程的情况下,我无法确定应该将什么传递到过程中。您也可以看看这篇文章。请注意,您得到的是
@Latitude未提供
错误,因为您应该传递DBNull.Value
而不是null
,您也可以看看这篇文章。请注意,您得到的是@纬度未提供
错误,因为您应该传递DBNull.Value
而不是null
回答了我的所有问题。谢谢您回答了我的所有问题。非常感谢