Search code examples
vb.netdatareaderno-data

.NextResult() method does gives an error that states that no data is present


Can you check my coding and let me know what I'm doing wrong?

I'm trying to use the .NextResult() method of a DataReader but I get an error that no data is present.

The 1st query returns a value but the 2nd query is the problem.

Dim strSqlStatement As String = "Select Count(*) As TotalRows " & _
                                          "From Parents " & _
                                         "Where (FatherName = @SearchValue " & _
                                         "   Or  MotherName = @SearchValue);"

strSqlStatement = strSqlStatement & "Select FatherName, MotherName " & _
                                          "From Parents " & _
                                         "Where (FatherName = @SearchValue " & _
                                         "   Or  MotherName = @SearchValue)"

' Set up the sql command and lookup the parent.
'----------------------------------------------
Using objSqlCommand As SqlCommand = New SqlCommand(strSqlStatement, ObjConnection)

    With objSqlCommand

        ' Add SqlParameters to the SqlCommand.
        '-------------------------------------
        .Parameters.Clear()
        .Parameters.AddWithValue("@SearchValue", TextBoxParentsName.Text)

        ' Open the SqlConnection before executing the query.
        '---------------------------------------------------
        Try
            ObjConnection.Open()

            ' Execute the query to see if the parents are in the database.
            '-------------------------------------------------------------

            ' Display the parent info.
            '-------------------------
            Dim reader As SqlDataReader = .ExecuteReader()

            reader.Read()

            Dim countOfRows = reader("TotalRows")

            If countOfRows = 1 Then

                reader.NextResult()

                TextBoxParentsName.Text = reader("FatherName").ToString()
                LabelBothParents.Text = "Father: " & TextBoxParentsName.Text & " Mother: " & reader("MotherName")
            End If

       Catch exErrors As Exception

            MessageBox.Show("Sorry, there was an error. Details follow: " & _
                                    vbCrLf & vbCrLf & exErrors.Message, _
                                    "Error")

            TextBoxParentsName.Focus()
        Finally
            blnDisableParentIdTextChanged = False

            ObjConnection.Close()
        End Try

    End With ' objSqlCommand
End Using ' objSqlCommand

Solution

  • Found the missing statement:

    I needed to add:

    reader.Read()

    after the reader.NextResult this area of coding:

    If countOfRows = 1 Then
    
        reader.NextResult()
    
        reader.Read() ' This is what I needed to add.
    
        TextBoxParentsName.Text = reader("FatherName").ToString()
        LabelBothParents.Text = "Father: " & TextBoxParentsName.Text & " Mother: " & reader("MotherName")
    End If
    

    I hope this helps someone who gets stuck like I did.