Quantcast
Channel: Visual Basic Tips and Tricks
Viewing all articles
Browse latest Browse all 2212

Datareader già aperto

$
0
0

Buona sera a tutti,

nell'applicazione riempo un datagrid con una sub. Il codice è essenzialmente il seguente:

Using cnn As SqlConnection = SqlHelper.ConnessioneDatabase
    cnn.Open()

            Dim cmd As New SqlCommand
            Dim stringaSQL As String = .....
            cmd.CommandText = stringaSQL

            cmd.Connection = cnn
            Dim dtr As SqlDataReader = cmd.ExecuteReader()

            While dtr.Read()
' .....

                LeggiQualifica

            End While

            ' chiudo gli oggetti
            dtr.Close()
        End Using

 

Il codice della  sub LeggiQualifica è sostanzialmente questo:

Using cnn As SqlConnection = SqlHelper.ConnessioneDatabase
            cnn.Open()

            Dim cmd As New SqlCommand

            Dim stringaSQL As String = ....
            cmd.CommandText = stringaSQL
            cmd.Connection = cnn

            Dim dtr As SqlDataReader = cmd.ExecuteReader()
            If dtr.HasRows Then
                dtr.Read()
                Qualifica = dtr("DesQualifica").ToString
            Else
                Messaggi.Errore("Ditta non trovata in fase di esportazione presenze", "Errore")
            End If

            ' chiudo gli oggetti
            dtr.Close()

        End Using

Il problema è che la sub LeggiQualifica va in errore poiché mi segnala che il datareader è aperto. Ma io questo già lo so. Esiste un modo per interrogare il database più volte senza appesantire l'applicazione in generale?

 

Grazie a tutti


Viewing all articles
Browse latest Browse all 2212