将十进制传递给具有不同文化的存储过程

时间:2017-06-12 15:41:41

标签: c# sql-server decimal

我试图用c#将小数(谷歌经度和纬度)传递给存储过程。我把替换是否接收的数据用点而不是昏迷分隔。

已经尝试过CultureInfo.InvariantCulture和其他确定分隔符的方法。

该方法在我的计算机上运行良好但是当我试图在服务器上运行时它崩溃了。

在我的电脑上,分隔符为'.',而不是服务器上设置的','

数据示例:49,088581

执行查询时会显示此错误消息:

  

“输入字符串的格式不正确”

阅读以下代码:

SqlParameter latPar = new SqlParameter();
latPar.Precision = 18;
latPar.Scale = 6;
latPar.SqlDbType = SqlDbType.Decimal;
latPar.Value = Convert.ToDecimal(lat.Replace('.', ',') == "" ? "0,00" : lat.Replace('.', ','));
latPar.ParameterName = "@lat";
command.Parameters.Add(latPar);



SqlParameter longPar = new SqlParameter();
longPar.Precision = 18;
longPar.Scale = 6;
longPar.SqlDbType = SqlDbType.Decimal;
longPar.Value = Convert.ToDecimal(lon.Replace('.', ',') == "" ? "0,00" : lon.Replace('.', ','));
longPar.ParameterName = "@long";
command.Parameters.Add(longPar);

0 个答案:

没有答案