SQLDataReader найти значение каждой строки - PullRequest
0 голосов
/ 10 ноября 2010

Раньше я использовал наборы данных вместо sqldatareaders, и я имел обыкновение делать что-то подобное

If dataset.tables(0).Rows(0)(1).ToString()) = "N" Then
   lbl.Text = dataset.tables(0).Rows(0)(2).ToString()) 
Else
   'Do Nothing
End If

Это явно не работает с sqldatareaders.

У меня есть код дляпосмотреть, есть ли в SQLDatareader какие-либо строки, но мне было интересно, есть ли способ получить значение каждой строки

Я предполагаю, что это возможно, и я осмотрелся, но не могу найтичто-нибудь

Dim conn As SqlConnection = New SqlConnection("server='h'; user id='w'; password='w'; database='w'; pooling='false'")  

conn.Open()  

Dim query As New SqlCommand("DECLARE @investor varchar(10), @sql varchar(1000) Select @investor = 69836 select @sql = 'SELECT * FROM OPENQUERY(db,''SELECT * FROM table WHERE investor = ''''' + @investor + ''''''')' EXEC(@sql)", conn) 

Dim oDR As SqlDataReader = query.ExecuteReader()

If oDR.HasRows or dataset.tables(0).Rows(0)(1).ToString()) = "N" Then
   lbl.Text = dataset.tables(0).Rows(0)(2).ToString())
Else
   'Do Nothing
End If

Это код, который у меня сейчас есть, который явно не работает

Есть идеи?

Спасибо

1 Ответ

0 голосов
/ 10 ноября 2010

Когда вы используете устройство чтения данных, вам нужно пройтись по каждой строке самостоятельно.Использование HasRows - хорошее начало, поскольку оно сообщит вам, является ли возвращенный набор результатов пустым.

Чтобы выполнить итерацию по набору результатов, вы должны использовать метод Read ().Он вернет истину, если вы находитесь в ряду, и ложь, если вы прошли мимо последнего ряда.

Мой Vb плохой, поэтому я дам вам пример на C #:

if (oDR.HasRows && oDR.Read()) 
{
  if (oDR.GetString(0) == "N")
  {
    lbl.Text = oDr.GetString(1);
  }  
}

Здесь я сначала проверяю, что у нас есть набор результатов с данными, а затем пытаюсь перейти к первомустрока.Если это удастся, я тогда читаю строковое значение первого столбца и сравниваю его с «N».Если значение равно «N», я устанавливаю для свойства Text переменной lbl строковое значение второго столбца.

Это должно быть эквивалентно вашему алгоритму с набором данных.Я рекомендую вам прочитать документацию MSDN для SqlDataReader .Это довольно хорошо, и пример кода полезен.

...