SQL十进制格式

时间:2018-03-01 14:19:26

标签: c# sql sql-server decimal taskscheduler

我正在使用带有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();

提前致谢

1 个答案:

答案 0 :(得分:5)

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

当您将内容视为文本时,一切都取决于您的区域设置 - 并且调度程序的区域设置不一定是您想到的区域设置。