代码之家  ›  专栏  ›  技术社区  ›  Jamie Taylor

找出SQLCommand查询中是否有行

  •  0
  • Jamie Taylor  · 技术社区  · 15 年前

    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 语句基本上表示 query 不返回行,然后显示特定标签

    能做到吗?

    2 回复  |  直到 15 年前
        1
  •  2
  •   AdaTheDev    15 年前

    尝试:

    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
  •  2
  •   Brandon Montgomery    15 年前

    你将被退回 SqlDataReader ExecuteReader() ,而且 数据阅读器 有一个 HasRows

    Dim oDR As SqlDataReader = query.ExecuteReader()
    
    If oDR.HasRows Then
      lblNoRows.Visible = False
    Else
      lblNoRows.Visible = True
    End IF
    
    推荐文章