Visualizzazione dei risultati da 1 a 9 su 9
  1. #1

    [VB.NET] Interfaccia Database

    Ciao a tutti sto creando un'applicazione che si deve allacciare a tre tipi di database (Access, MySql, Sql Server). La mia idea è quella di sfuttare un'intefaccia o una classe astratta che viene successivamente implementata o Derivata da le tre classi Sql, Access e MySql che restituiscono i tipi oppurtuni Es. SqlDataAdapter ecc.. .
    Il mio problema sta proprio nella creazione dell'interfaccia che non può struttare nella dichiarazione delle funzioni un tipo univoco ma tre tipi completamente diversi questo perchè esiste il namespace SqlClient, OleDb e quello esterno da configurare di MySql.
    naturalmente l'applicazione deve richiamare un metodo della dll che sceglierà in seguito il tipo di Database da utilizzare.

    Quesito abbastanza rognoso vero?
    Qualcuno a qualche idea?
    :master:

    Ciao a tutti!

  2. #2
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,472
    Potresti usare come tipi di dati le classi base, anzi le interfacce implementate dalle classi che costituiscono i vari provider ADO.NET per SQL Server, OLE DB, ODBC e così via.

    Ad esempio, se tu vuoi creare un metodo che accetti ciascun tipo di connessione (a prescindere dalla base dati utilizzata), puoi dichiararlo di tipo IDBConnection, poichè tutte le classi SqlConnection, OleDbConnection e così via implementano quell'interfaccia, pertanto il tuo metodo sarà adatto a qualsiasi tipo di connessione passata per parametro.

    Non so se ho capito bene il tuo problema e se ti ho fornito una risposta sufficientemente adeguata; in caso negativo, aggiungi qualche dettaglio così possiamo approfondire.

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  3. #3
    Utente di HTML.it L'avatar di cassano
    Registrato dal
    Aug 2004
    Messaggi
    3,002
    io una volta lo usato se lo trovo nei miei appunti ho il codice per sviluppare tutto cio.

  4. #4
    spiego meglio il mio problema:

    Ho creato una classe base di nome DBConnect dove tramite il costruttore New verifico a quale Provider mi devo collegare. la mia interfaccia giustamente posso fare in modo che restituisca un'interfaccia del provider utilizzato e le classi SQLData, OleDbData, MySqlData implementeranno queste interfaccie restituendo alla classe base il provider desiderato. E fino a qui tutto Ok!

    Il problema nasce quando dall'applicazione creo l'istanza DBConnect contenente una Function di nome Adapter ad esempio, mi dovrebbe restituire il tipo di dato giusto perchè l'applicazione deve essere indipendente.
    Secondo voi la soluzione quale potrebbe essere?
    Fate degli esempi

  5. #5
    Utente di HTML.it
    Registrato dal
    Jul 2001
    Messaggi
    798
    tre function Adapter, overload, o no? A seconda di come verrà dichiarato il tipo di dato che riceverà il valore della funzione, sarà invocata la function relativa.
    Ans.

  6. #6
    Le tre Function Adapter però non hanno da ricevere nessun tipo di parametro sono dichiarate così:


    Public Function Adapter() As OleDbDataAdapte
    Return New OleDbDataAdapter
    End Function


    Così non è assolutamente possibile fare L'overload della funzione

    Ciao ciao

  7. #7
    Utente di HTML.it
    Registrato dal
    Jul 2001
    Messaggi
    798
    e allora...

    Public Function Adapter() As System.Data.IDbDataAdapter
    Return New System.Data.OleDb.OleDbDataAdapter
    End Function

    e quando richiami la funzione:

    Dim adapter As System.Data.OleDb.OleDbDataAdapter
    adapter = ctype(Adapter,System.Data.OleDb.OleDbDataAdapter)


    spero :master:

    pero' dovresti passare un parametro a seconda del quale far ritornare un determinato tipo.
    Ans.

  8. #8
    è già e non solo nell'applicazione chiamante volevo evitare di fare la conversione dei tipi.

    Mi sembra un bel macello vero?


    Ciao ciao

  9. #9
    Utente di HTML.it
    Registrato dal
    Jul 2001
    Messaggi
    798
    devi impostare l'option strict a off e allora puoi fare:

    Dim newAdapter As System.Data.OleDb.OleDbDataAdapter = Adapter()
    Ans.

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.