gpt4 book ai didi

c# - 使用 TableAdapter 将小数从 C# 错误地传递到 SQL Server

转载 作者:太空宇宙 更新时间:2023-11-03 13:57:00 26 4
gpt4 key购买 nike

昨天我注意到在使用 TableAdapter 时有一个奇怪的行为,出于某种原因,当传递小于 0.1 的小数时,它会变成整数。例如,如果我传递 1.0123,我可以在 SQL Profiler 中看到 1.0123,但如果我传递 0.0123,我将得到 123。是否存在已知问题?您可以执行以下步骤来重现该问题:

  1. 新建数据库TestDatabase,并创建如下存储过程

    create proc DecimalParametersSelect
    (
    @Foo decimal(10,5)
    )

    as

    select @Foo
  2. 创建一个新项目并添加一个新的数据集文件 SampleDataset.添加一个新的 TableAdapter 并添加 DecimalParametersSelect 作为 Select 过程(它应该是您的数据库中唯一的一个)。

  3. 运行您的项目并尝试选择一些数据,例如

    using (SampleDatasetTableAdapters.DecimalParametersSelectTableAdapter dta = new SampleDatasetTableAdapters.DecimalParametersSelectTableAdapter())
    {
    var table = dta.GetData(0.01588M);
    }

在探查器中,您应该看到传入的值是 1588(有趣的是,返回值在 C# 中被正确识别为 0.01588)

最佳答案

TextData 列未包含在跟踪中并且 RPC 命令的文本是从另一个来源重建时(大概是 BinaryData).

我按照您的步骤进行操作,并能够使用 SQL 事件探查器中的默认跟踪在 SQL 2008 R2 上进行 repo 。

但是,当跟踪属性更改为包含 RPC:CompletedTextData 列时,将显示正确的命令。

enter image description here

关于c# - 使用 TableAdapter 将小数从 C# 错误地传递到 SQL Server,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11845012/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com