хранимая процедура sql - возникают проблемы с получением нескольких строк данных с помощью Idatareader - PullRequest
0 голосов
/ 09 июня 2011

У меня есть хранимая процедура, которая делает это:

SELECT TOP 4 FROM dbo.test

(таблица содержит 5 строк)

Мой код c #:

IDataReader test= ((IDataReader)(DataProvider.Instance().ExecuteReader("fetchtest")));
 test.Read();
 title1.Text = test.GetString(0);
 title2.Text = test.GetString(1);
 title3.Text = test.GetString(2);
 title4.Text = test.GetString(3); 

Однако я могу отображать только 0 и 1. 2+ даст мне ошибку индекса. Есть ли лучший способ получить все строки?

Спасибо

Ответы [ 2 ]

2 голосов
/ 09 июня 2011

IDataReader.GetString(2) возвращает значение третьего столбца, а не записи.Вам нужно использовать метод Read () , чтобы перейти к следующей записи.

0 голосов
/ 09 июня 2011

Как сказал a1ex07, GetString получает n-й столбец. Вот полный пример кода.

List<string> titles = new List<string>();
using (IDataReader test = ((IDataReader)(DataProvider.Instance().ExecuteReader("fetchtest"))))
{
    while (test.Read())
    {
       titles.Add(test.GetString(0));
    }
}


title1.Text = titles[0];
title2.Text = titles[1];
title3.Text = titles[2];
title4.Text = titles[3];
...