Visualizzazione dei risultati da 1 a 6 su 6

Discussione: Connessione db

  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2002
    Messaggi
    144

    Connessione db

    Salve a tutti, sono nuova di ASP.NET e finora ho programmato in VB6. Per connettermi a un database in vb ho sempre utilizzato ADO e le seguenti righe di codice

    Dim cnn As ADODB.Connection
    'connessione database
    Set cnn = New ADODB.Connection
    cnn.Open DSN, NomeUtente, Password

    dove DSN è il nome assegnato all'origine dati che individua il database e il driver ODBC.

    A parte il concetto di dataset, a livello di connessione, se voglio fare una connessione con ADO.NET che sia indipendente dalla base dati come devo fare?
    Grazie a tutti e scusate la domanda forse ovvia :rollo:

  2. #2
    Credimi la domanda non è ovvia perchè nel mondo del lavoro difficilmente si ricorre a creare metodi di connessioni indipendenti dal provider.

    Comunque, come hai ben capito ADO e ADO.NET forniscono soluzioni differenti al prooblema della creazione di codice in gradoo di funzionare qualsiasi provider e con ogni tipo di database. In ADO, la soluzione è veramente semplice, poiché è possibile
    utilizzare gli stessi oggetti Connection, Command e Recordset di ADO indipendentemente dal provider OLE DB
    adottato, e occorre solamente creare correttamente la stringa di connessione da passare al metodo Open
    dell’oggetto Connection.

    Gli oggetti di ADO.NET definiti nei vari provider ereditano lo stesso insieme fondamentale di membri da una
    classe di base o da un’interfaccia comune ma sono, allo stesso tempo, liberi di creare nuove proprietà e metodi per
    sfruttare al meglio le caratteristiche di ciascun provider. È possibile avvantaggiarsi della classe di base o
    dell’interfaccia comune per creare routine generiche che funzionino con qualunque provider, anche se il codice da
    scrivere non è affatto semplice. Di seguito sono riportati alcuni esempi che eseguono operazioni comuni in modo
    indipendente dal provider.

    Creare una procedura che apra e restituisca un oggetto Connection è relativamente semplice poiché questi
    oggetti implementano l’interfaccia IDbConnection. Per capire il tipo di connessione da creare, è sufficiente
    verificare se la stringa di connessione contiene l’attributo Provider o Driver:

    codice:
    Function CreateConnection(ByVal connString As String) As IDbConnection
    If connString.ToLower.IndexOf(“provider=”) >= 0 Then
        Return New OleDbConnection(connString)
    ElseIf connString.ToLower.IndexOf(“driver=”) >= 0 Then
        Return New OdbcConnection(connString)
    Else
    Return New SqlConnection(connString)
    End If
    End Function
    L’oggetto Connection espone un metodo CreateCommand che restituisce l’oggetto Command utilizzato dallo
    specifico provider. Tutti gli oggetti Command implementano l’interfaccia IDbCommand, pertanto è possibile
    eseguire un comando in modo indipendente dal database come segue:
    codice:
    ‘ Inizia con la stringa di connessione.
    Dim connStr As String = BiblioConnString
    ‘ Decommentare la seguente riga di codice per verificare che funzioni
    ‘ anche con il provider SQL.
    ‘ connStr = SqlPubsConnString
    ‘ Crea un oggetto Connection, lo assegna ad una generica variabile
    ‘ IDbConnection.
    Dim cn As IDbConnection = CreateConnection(connStr)
    cn.Open()
    ‘ Crea un comando su tale connessione.
    Dim cmd As IDbCommand = cn.CreateCommand()
    ‘ Il CommandText deve essere assegnato separatamente.
    cmd.CommandText = “DELETE Publishers WHERE City=’Boston’”
    cmd.ExecuteNonQuery()
    Per leggere i dati restituiti da un comando SELECT è possibile assegnare il risultato di un metodo
    ExecuteReader a una variabile IDataReader:

    codice:
    ‘ Ottiene un oggetto DataReader. (Assume che cmd contenga una query SELECT).
    Dim dr As IDataReader = cmd.ExecuteReader
    ‘ Scrive i valori dei campi e chiude il DataReader.
    Do While dr.Read
    For i As Integer = 0 To dr.FieldCount - 1
    Debug.Write(dr(i))
    Next
    Debug.WriteLine(“”)
    Loop
    dr.Close()
    Ti ho scritto il codice in vb.net sperando che ti possa essere di maggiore aiuto visto che vieni da vb6. Consiglio tra 2 mesi buttalo via e passa a c#

    se hai bisogno di altro.
    fai un fischio.
    Ciao!

  3. #3
    Utente di HTML.it
    Registrato dal
    Apr 2002
    Messaggi
    144
    Vediamo se ho capito bene.....se voglio fare una connessione con un db Oracle è meglio se uso OracleConnection (anche se potrei comunque usare la connessione OleDb o ODBC).
    Mentre se devo connettermi con un db PostgreSQL devo utilizzare il driver odbc (visto che il provider OleDb pare ancora non completamente testato). Pertanto in base al db che devo utilizzare devo scrivere una stringa di connessione particolare (non posso più scrivere semplicemente il dsn) e in base al suo contenuto utilizzare uno strumento piuttosto che un altro...dico bene? oppure ho detto una serie di c....?
    Grazie

  4. #4
    no hai detto bene.
    io ti ho illustrato come fare a scrivere codice indipendente dal tipo di database che andrai ad utilizzare.. volendo puoi usare questa strada (sconsigliata ma applicabile), oppure usare la migliore soluzione che è quella dei Provider scritto ad Hoc per ogni database.

    Sql server - System.Data.SqlClient
    etc etc etc


    Cia

    PS = a follonica?

  5. #5
    Utente di HTML.it
    Registrato dal
    Apr 2002
    Messaggi
    144
    quindi mi consigli di usare SqlConnection o OracleConnection? Ma usando questi oggetti non posso scrivere codice indipendente dal tipo di db usato. Giusto? E se poi voglio usare PostgreSQL non c'è un....come si dice? oggetto? classe? del genere....cioè un PostgreSQLConnection.
    Grazie per la pazienza

    PS= A Follonica è appena spuntato il sole

  6. #6
    si esatto. come dice il nome
    SqlClient è solo per Sql Server.
    OracleConnection è solo per Oracle.

    per il codice indipendente al 100% devi utilizzare la soluzione iniziale da me proposta.


    PS = ho casa a follonica se lo sapevo ti potevo dare lezioni in spiaggia

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.