繁体   English   中英

如何在c#中转换sql类型的双精度

[英]How to convert sql type double-precision in c#

我有一个数据库访问权限,其中一个字段是双精度的。 通常,如果我在文本框1.71或1,71中设置,则数据库中的字段应包含1.71。

但是如果我执行查询,acces'field的值是171 !!

public const string QUERY = 
        @"UPDATE TBLART 
          SET TBLART.COST = @cost
          WHERE TBLART.CODE= '1'";

var param = new DynamicParameters();
var cost = totalCost.Replace(',', '.'); //totalCost is a textbox
param.Add("cost", Double.Parse(cost), DbType.Double);

gsmconn.Execute(QUERY, param);

我错了什么? 谢谢。

double.Parse默认使用当前线程的文化。 怀疑你现在的文化是用“。” 作为分组分隔符。

两种选择:

  • 继续使用您正在执行的Replace ,但在解析时指定CultureInfo.InvariantCulture
  • 删除替换,并在解析原始值时使用当前线程的文化。 这依赖于适合用户的文化,但在这种情况下可能是更好的解决方案。 (否则输入“1,234.56”的人在预期“只是超过1234”的值时会得到一个解析错误。)

如果我在Windows窗体中正确记住,您可以将double属性绑定到文本框,它将自动处理解析和转换。 您不应该手动从字符串解析为double。

这个问题已经由.NET框架解决了。

另一个建议是,您的数据访问代码不应该进行任何解析。 这应该在更高层进行。 但最好把它留给框架。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM