DataTableReader.HasRows Property

 

Gets a value that indicates whether the DataTableReader contains one or more rows.

Namespace:   System.Data
Assembly:  System.Data (in System.Data.dll)

Public Overrides ReadOnly Property HasRows As Boolean

Property Value

Type: System.Boolean

true if the DataTableReader contains one or more rows; otherwise false.

Exception Condition
InvalidOperationException

An attempt was made to retrieve information about a closed DataTableReader.

The HasRows property returns information about the current result set. If the DataTableReader contains multiple result sets, you can examine the value of the HasRows property immediately after you call the NextResult method in order to determine whether the new result set contains rows.

Use the HasRows property to avoid the requirement to call the Read method of the DataTableReader if there are no rows within the current result set.

The following example fills two DataTable instances with data. The first DataTable contains one row, and the second contains no rows. The example then creates a DataTableReader that contains both DataTable objects, and calls the PrintData method to display the contents of each, checking the value of the HasRows property of each before it makes the call to PrintData.

Private Sub TestHasRows()
   'Retrieve one row from the Store table:
   Dim customerTable As DataTable = GetCustomers()
   Dim productsTable As DataTable = GetProducts()

   Using reader As New DataTableReader( _
      New DataTable() {customerTable, productsTable})

      Do
         If reader.HasRows Then
            PrintData(reader)
         End If
      Loop While reader.NextResult()
   End Using

   Console.WriteLine("Press Enter to finish.")
   Console.ReadLine()
End Sub

Private Sub PrintData( _
   ByVal reader As DataTableReader)

   ' Loop through all the rows in the DataTableReader.
   Do While reader.Read()
      For i As Integer = 0 To reader.FieldCount - 1
         Console.Write("{0} ", reader(i))
      Next
      Console.WriteLine()
   Loop
End Sub
Private Function GetCustomers() As DataTable
   ' Create sample Customers table, in order
   ' to demonstrate the behavior of the DataTableReader.
   Dim table As New DataTable

   ' Create two columns, ID and Name.
   Dim idColumn As DataColumn = table.Columns.Add("ID", GetType(Integer))
   table.Columns.Add("Name", GetType(String))

   ' Set the ID column as the primary key column.
   table.PrimaryKey = New DataColumn() {idColumn}

   table.Rows.Add(New Object() {1, "Mary"})
   Return table
End Function

Private Function GetProducts() As DataTable
   ' Create sample Products table, in order
   ' to demonstrate the behavior of the DataTableReader.
   Dim table As New DataTable

   ' Create two columns, ID and Name.
   Dim idColumn As DataColumn = table.Columns.Add("ID", GetType(Integer))
   table.Columns.Add("Name", GetType(String))

   ' Set the ID column as the primary key column.
   table.PrimaryKey = New DataColumn() {idColumn}

   Return table
End Function

.NET Framework
Available since 2.0
Return to top
Show: