【问题标题】:SQL Decimal Format [closed]SQL十进制格式[关闭]
【发布时间】:2018-08-09 15:19:21
【问题描述】:

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

提前致谢

【问题讨论】:

  • 您应该提供代码
  • 请为您的问题创建一个Minimal, Complete, and Verifiable example
  • 确保您使用相同的可执行文件运行。在 VS 中,您可能正在使用调试版本,而调度程序正在使用发布版本。在 bin 文件夹中检查 debug 和 release 版本是同时构建的。
  • 我编辑了我的问题,您可能会找到上面的代码
  • 您需要显示更多代码。 mevcutKur.KurValue 是什么类型??

标签: c# sql sql-server decimal taskscheduler


【解决方案1】:

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

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

【讨论】:

  • 如果我不清楚,我很抱歉。我已经尝试过不转换为字符串。我正在使用实体框架。所以没有sql参数
  • @Battlelamb EF 不会对此感到困惑,只要 SQL 列实际上是十进制类型;您将需要在某些时候显示一些代码 - 可能在解析/格式化代码的某个地方。
  • 我刚刚编辑了我的问题。:))
  • @Battlelamb 我们去 - Convert.ToDecimal 是依赖于语言环境的转换,很可能是一切的原因;考虑在该调用中指定明确的CultureInfo
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-29
  • 2023-03-07
  • 2020-11-19
  • 1970-01-01
相关资源
最近更新 更多