如何在 Visual C# 中使用 DataReader 处理多个结果?
How to handle Multiple Results by Using the DataReader in Visual C#?
我有一个 return 两个 table 的存储过程。例如 Table 1 有 {1,2,3,4,5},table 2 将有 {a,b,c,d,e}。例如 {1,a}, {2,b} 同样都是相关的。
在我的 reader 中,我必须将所有这些数据读入一个列表。对象将有两个属性,其中 {1,a} 去。这是我现在的代码,
while(reader.Read())
{
Transaction transaction = null;
transactions.Add(transaction = new Transaction()
{
TranID = reader.GetInt64(reader.GetOrdinal("TranID"))
});
if (reader.NextResult())
{
while (reader.Read())
{
transaction.Amounts.Add(new Fund
{
Amount = reader.GetDecimal(reader.GetOrdinal("Amount")),
});
}
}
}
如果我 return 10 个交易 ID 和 10 个金额,我的最终结果只有 1 个交易和 10 个金额映射到它。如何获得 10 笔等额交易?
您不能通过这种方式从 SqlDataReader 访问多个结果集。您一次可以访问一个结果集中的所有行。如果移动到下一个结果集,则无法返回到上一个结果集。
以下是如何从 SqlDataReader 的多个结果集中检索数据的示例代码。
while (reader.Read())
{
Console.WriteLine(reader.GetString(0));
}
if (reader.NextResult())
{
while (reader.Read())
{
Console.WriteLine(reader.GetString(0));
}
}
我有一个 return 两个 table 的存储过程。例如 Table 1 有 {1,2,3,4,5},table 2 将有 {a,b,c,d,e}。例如 {1,a}, {2,b} 同样都是相关的。
在我的 reader 中,我必须将所有这些数据读入一个列表。对象将有两个属性,其中 {1,a} 去。这是我现在的代码,
while(reader.Read())
{
Transaction transaction = null;
transactions.Add(transaction = new Transaction()
{
TranID = reader.GetInt64(reader.GetOrdinal("TranID"))
});
if (reader.NextResult())
{
while (reader.Read())
{
transaction.Amounts.Add(new Fund
{
Amount = reader.GetDecimal(reader.GetOrdinal("Amount")),
});
}
}
}
如果我 return 10 个交易 ID 和 10 个金额,我的最终结果只有 1 个交易和 10 个金额映射到它。如何获得 10 笔等额交易?
您不能通过这种方式从 SqlDataReader 访问多个结果集。您一次可以访问一个结果集中的所有行。如果移动到下一个结果集,则无法返回到上一个结果集。
以下是如何从 SqlDataReader 的多个结果集中检索数据的示例代码。
while (reader.Read())
{
Console.WriteLine(reader.GetString(0));
}
if (reader.NextResult())
{
while (reader.Read())
{
Console.WriteLine(reader.GetString(0));
}
}