Узнайте, есть ли строки в запросе SQLCommand - PullRequest
0 голосов
/ 09 ноября 2010

У меня есть такой код

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) 

dgBookings.DataSource = query.ExecuteReader 
dgBookings.DataBind() 

Мне нужно добавить в оператор If, в основном говоря, что если SQLCommand query не возвращает строк, то показывает определенную метку

Можно ли это сделать?

Спасибо

Ответы [ 2 ]

2 голосов
/ 09 ноября 2010

Попробуйте:

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 rdr as SqlDataReader
rdr = query.ExecuteReader()

if (rdr.HasRows) then
   dgBookings.DataSource = rdr
   dgBookings.DataBind() 
else
    .....
end if

Очевидно, что вы могли бы обеспечить очистку / удаление объектов, так что это просто для демонстрации HasRows;)

2 голосов
/ 09 ноября 2010

Вам возвращают SqlDataReader при вызове ExecuteReader(), и что SqlDataReader имеет свойство HasRows, которое вы можете проверить.

Dim oDR As SqlDataReader = query.ExecuteReader()

If oDR.HasRows Then
  lblNoRows.Visible = False
Else
  lblNoRows.Visible = True
End IF
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...