Buondi
Ho questa funzione in una classe che serve a restituirmi un DataReader per poi estrarre uno o piu record dal suo contenuto.
Ma il mio dubbio è che inserendo l'istruzione Return, che come è noto esce dalla routine, non vengano poi annientati gli oggetti connection e command in quanto non verranno mai eseguite le istruzioni end using.
Nè posso mettere il return alla fine perchè dopo gli End Using, il DataReader non esisterebbe piu e la funzione non restituirebbe nulla.
Come posso fare (o meglio come si fa in genere?)
Ecco la routine:
nella classe: clsClasseDB
Function PrendeDataReader(Qry As String) As OdbcDataReader
Using oConnection As New OdbcConnection(m_strConnessione)
oConnection.Open()
Using oCommand As New OdbcCommand(Qry, oConnection)
Using oDataReader As OdbcDataReader = oCommand.ExecuteReader
Return oDataReader '
End Using ' odatareader
End Using 'command
End Using ' oConnection
End Function
'Per usarla, da qualchew parte nel codice
dim oClasseDB as New clsClasseDB
Using MyDr As OdbcDataReader = oClasseDB.PrendeDataReader(Qry)
If MyDr.HasRows Then
'MioCampo = MyDR("MioCampo")
'...
End If
End Using