所以这是我目前拥有的代码,当从表中读取一个结果时工作正常,
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++;
}
但这不起作用,我认为这是因为读者只会返回一行。有没有一种简单的方法来修改我在这里逐行读取新对象的内容? 感谢。
答案 0 :(得分:6)
查看GetString(0)
GetInt32(1)
,0
和1
是列索引,而不是行。所以你应该离开它并删除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)));
}