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