SQL十进制格式[关闭]

问题描述 投票:-1回答:1

我正在使用Windows任务调度程序的基本控制台应用程序。

该程序从网络中获取一些十进制值并保存在SQL Server表中。

当我手动运行程序时,十进制格式没有问题。

如果任务调度程序运行程序,它将读取它们(我在这里猜测)为int。

例:

  • 我运行程序时:3.7658 => 3.7658
  • Windows任务计划程序:3.7654 => 37658

我尝试将其转换为字符串,用“。”替换“,”。

decimal valueKur = 0;

valueKur = Convert.ToDecimal(xmlDoc.SelectSingleNode(string.Format("Tarih_Date/Currency[@Kod='{0}']/BanknoteSelling", item)).InnerXml);

mevcutKur.KurValue = valueKur;
db.SaveChanges();

提前致谢

c# sql sql-server decimal taskscheduler
1个回答
5
投票

听起来你已经使用字符串连接来更新数据库中的数据。基本上:永远不要那样做。如果您使用SQL参数(SET whatever=@whatever等),那么数据库将不需要进行任何字符串解析,并且不会产生混淆 - 尤其是在i18n / l10n问题上,例如逗号/句点是否为组分隔符或小数点。同样,将它作为十进制类型存储在数据库中(不是字符串/ char / etc类型),将其作为十进制类型读出,等等。

当您将事物视为文本时,一切都取决于您的语言环境 - 调度程序的语言环境不一定是您想到的语言环境。

© www.soinside.com 2019 - 2024. All rights reserved.