c# SqlDataAdapter将Column of Decimal中的所有值转换为零

本文关键字:转换 SqlDataAdapter Column of Decimal | 更新日期: 2023-09-27 18:05:11

我使用SqlDataAdapter来填充来自SQLServer表的数据集。除了Transaction列(在数据库中是Decimal类型)外,所有列都被正确填充。这些值都变成0.0。

代码:
using (SqlConnection dbconn = new SqlConnection (connection_string)) {
            SqlDataAdapter adapter = new SqlDataAdapter (query, dbconn);
            exposureSequence = new DataSet ();
            adapter.Fill (exposureSequence, "ExposureSequence");
        }

此代码

            foreach(DataRow r in exposureSequence.Tables["ExposureSequence"].Rows){
            Console.WriteLine(r["TransactionAmount"] + ", ");
        }

打印

0.0000, 
0.0000, 
0.0000,
...

但是如果我这样做:

using (IDataReader reader = dbcmd.ExecuteReader()) {
                    while(reader.Read()){
                        //int ActionClientID = (int) reader["ActionClientID"];
                        Decimal TransactionAmount = (Decimal) reader["TransactionAmount"];
                        Console.WriteLine(TransactionAmount);
                    }
我的输出是:
164.4950
164.4950
164.4950
...

为什么是适配器。填充将TransactionAmount值转换为0.000?

c# SqlDataAdapter将Column of Decimal中的所有值转换为零

我看不出你发布的两个版本的代码有什么区别。你应该得到相同的结果。如果使用dataReader或dataAdapter执行相同的查询,不同之处在于它们的执行方式,而不是得到的结果。执行时是否使用相同的查询?如果你这样做,我相信问题可能在其他地方(而不是在两个版本的差异)。