Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2000
    Messaggi
    20

    OleDbDataReader come parametro uscita di una funzione

    Ho creato una funzione che mi ritorna il DataReader risultato di una query Sql. All'esterno della funzione uso il DatReader per leggeri i dati, ma dove posso chiudere il DataReader? Fuori della funzione non è molto bello, come strutturereste il codice?

    Private Function GetDatiTabella() As OleDb.OleDbDataReader
    Dim conn As OleDb.OleDbConnection
    Dim sql As String = "SELECT * .... FROM tabella ...."
    Dim cmd As New OleDb.OleDbCommand(sql, conn)
    Dim rs As OleDb.OleDbDataReader

    rs = cmd.ExecuteReader()
    cmd = Nothing

    Return rs
    End Function

    Al Page Load:
    Dim rs As OleDb.OleDbDataReader
    rs = GetDatiTabella()
    Do While rs.Read()
    Response.Write(rs("id_commesseRisorse"))
    Loop

    rs.Close()

  2. #2
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    Secondo me, la tua soluzione è buona. Ho visto un esempio simile in un libro in cui spiega come sviluppare oggetti commerciali.
    In pratica ti costruisci un metodo in una classe o in un modulo, (come hai fatto)

    La funzione che restituisce il DataReader, probabilmente l'avrei fatta aggiungento due parametri, StringaConnessione e StringaSql

    L'esempio che ho visto è del tipo:

    dim objReader as OleDbDataReader = miaClasse.MiaFunzione(StringaConnession, StringaSQl)

    Se non restituisce Nothing itera o associalo alla griglia

    chiudi objReader

    A proposito, in letteratura si consiglia di non utilizzare il dataset almeno che non sia assolutamente necessario. Il DataReader è molto meno pesante.

    Ti mando un esempio:
    codice:
        Protected s$ = ""
    
        '-------------------------------------------------------------------------------------
        'Restituisce un oggetto DataReader o nothing in caso di errore
        'parametri: Stringa di connessione, stringa sql
        '-------------------------------------------------------------------------------------
        Public Function GetDataReader(ByVal stringaConnessione$, ByVal stringaSQL$) As OleDbDataReader
            Dim Reader As OleDbDataReader
            Try
                Dim Connessione As New OleDbConnection(stringaConnessione)
                Connessione.Open()
                Dim Comando As New OleDbCommand(stringaSQL, Connessione)
                Reader = Comando.ExecuteReader(CommandBehavior.CloseConnection)
                Return Reader
            Catch Errore As Exception
                Return Nothing
            End Try
    
    
        End Function
    
    
        Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            Dim sql$ = "SELECT * FROM CAMPI"
            Dim StringaConnessione$ = Application("connessione_access_prova").ToString
    
            Dim Reader As OleDbDataReader = GetDataReader(StringaConnessione, sql)
            If Reader Is Nothing Then Exit Sub
    
            Dim Colonne% = Reader.FieldCount
            s = "<table border='1' cellspacing='1' cellpadding='2'>"
            s &= "<tr>"
            Dim i, j As Integer
            For j = 0 To Colonne - 1
                s &= "<th>" & Reader.GetName(j) & "</th>"
            Next
            s &= "<th>" & "link" & "</th>"
            s &= "</tr>"
    
            While (Reader.Read)
                s &= "<tr>"
                For j = 0 To Colonne - 1
                    s &= "<td>" & Reader.Item(j).ToString & "</td>"
                Next
                s &= "<td>" & "link" & "</td>"
                s &= "</tr>"
    
            End While
    
    
            Reader.Close()
    
    
            Me.DataBind()
        End Sub
    dove l'istruzione:
    codice:
    Reader = Comando.ExecuteReader(CommandBehavior.CloseConnection)
    forza la chiusura automatica della connessione non appena viene richiamato il metodo close dell'oggetto datareader

    Ciao

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.