C#SqlDataAdapter将“十进制列”中的所有值都设置为零

时间:2011-08-11 20:20:21

标签: c# sql-server dataset

我正在使用SqlDataAdapter从SQLServer表中填充DataSet。除了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
...

为什么adapter.Fill将TransactionAmount值转为0.000?

1 个答案:

答案 0 :(得分:0)

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