使用SQL阅读器读取多行

时间:2015-04-17 14:06:15

标签: c# sql-server

所以这是我目前拥有的代码,当从表中读取一个结果时工作正常,

SqlDataReader reader = cmd.ExecuteReader();

while (reader.Read())
{
    newValue = reader.GetString(0);
    newPageID = reader.GetInt32(1);
}

但是,当有多行被返回时会出现问题。我尝试这样做的方式是这样的,

int counter = 0;
List<Trigger> TriggerValues = new List<Trigger>();

while (reader.Read())
{
    TriggerValues.Add(new Trigger(reader.GetString(counter), reader.GetInt32(counter+1)));
    counter++;

} 

但这不起作用,我认为这是因为读者只会返回一行。有没有一种简单的方法来修改我在这里逐行读取新对象的内容? 感谢。

2 个答案:

答案 0 :(得分:6)

查看GetString(0) GetInt32(1)01是列索引,而不是行。所以你应该离开它并删除counter

List<Trigger> TriggerValues = new List<Trigger>();

while (reader.Read())
{
    TriggerValues.Add(new Trigger(reader.GetString(0), reader.GetInt32(1)));
}

答案 1 :(得分:4)

每次执行reader.Read()时,您都在加载新行。您提供给.GetString().GetInt32()函数的索引是列索引,而不是行索引。

您只需致电

List<Trigger> TriggerValues = new List<Trigger>();
while (reader.Read())
{
    TriggerValues.Add(new Trigger(reader.GetString(0), reader.GetInt32(1)));
}