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

Supporto di diversi DB nelle applicazioni VB NET

$
0
0
Sto cercando di predisporre le routine di libreria, che si interfacciano al database, al supporto di più DB in modo che, sulla base di un parametro che arriva via lista (DBServerType), non sia necessario duplicare le routine. Per quanto riguarda connessioni e transazioni faccio arrivare via lista una mia struttura che al suo interno contiene le connessioni/transazioni per tutti i DB interessati e, come si vede dal codice, applico quelle richieste sulla base del parametro DBServerType.

Per le variabili interne (command e parameters) pensavo potesse funzionare qualcosa del tipo:

Select Case DBServerType
    Case DBServer.MSAccess, DBServer.OLEDB
        Dim cmd As OleDbCommand
        Dim prmGroupID As New OleDbParameter
    Case DBServer.SQLServer
        Dim cmd As SqlClient.SqlCommand
        Dim prmGroupID As New SqlClient.SqlParameter
End Select

Ma ottengo solo errori di sintassi nel resto della routine. L'intento sarebbe quello di utilizzare le stesse variabili e non un cmdo per oleedb e cmds per sql server.


Vorrei evitare di usare gli overload perchè a volte le routine che ho già scritto hanno già delle versioni in overload e vorrei non avere la proliferazione degli overload.

Gli overload li userei sicuramente per le routine:

- SetOleParameter
- ExecuteNonQuery (+ altre ExecuteReader e ExecuteScalar)

Avete qualche suggerimento per superare questo ostacolo?

Sotto un esempio di routine.

Grazie

 

Public Shared Sub PutEmployeeAbsenceGroup(ByVal DBServerType As IntegerByVal DBconn As DBConnectionsType, _
                                          
ByVal ProgName As StringByVal FormName As String, _
                                          
ByVal ErrLanguage As StringByVal InsertMode As Boolean, _
                                          
ByVal LenDescription As Integer, _
                                          
ByVal AbsenceGroupInfo As EmployeeAbsenceGroupType, _
                                          
ByRef DBTransaction As DBTransactionType, ByRef OperationDone As Boolean)
   
Dim strSQL As String, RoutineName As String = "PutEmployeeAbsenceGroup"
   Dim NumRowsAffected As Integer   Dim cmd As New OleDbCommand   Dim rst As OleDbDataReader = Nothing   Dim prmGroupID As New OleDbParameter, prmDescription As New OleDbParameter'
' Inserimento/aggiornamento gruppo assenze
'

    
If InsertMode Then
        strSQL = "INSERT INTO GruppiAssenzeCollaboratori " & _
                 
"            (GroupID,Description) " & _
                 
"VALUES      (?,?);"
    Else
        strSQL = "UPDATE GruppiAssenzeCollaboratori " & _
                 
"SET    Description=? " & _
                 
"WHERE  GroupID=?;"
    End If

    With AbsenceGroupInfo
        
Call SetOleParameter(cmd, ParameterDirection.Input, "prmGroupID", .ID, False, prmGroupID)
        
Call SetOleParameter(cmd, ParameterDirection.Input, "prmDescription", LenDescription, .Description, False, _
                             prmDescription)
    
End With

    With cmd
        
Select Case DBServerType
            
Case DBServer.MSAccess, DBServer.OLEDB
                .Connection = DBconn.OleDbconn
                .Transaction = DBTransaction.OleDbTransaction
        
End Select
        .CommandText = strSQL
        .CommandType = CommandType.Text
        
If InsertMode Then .Parameters.Add(prmGroupID)
        .Parameters.Add(prmDescription)
        
If Not InsertMode Then .Parameters.Add(prmGroupID)
    
End With
    Call ExecuteNonQuery(DBServerType, ProgName, FormName, RoutineName, ErrLanguage, True, DBTransaction, cmd, _
                         NumRowsAffected, OperationDone)
    
If Not OperationDone Then Exit Sub

    cmd = Nothing
End
 Sub

 


Viewing all articles
Browse latest Browse all 2212

Trending Articles


Vimeo 10.7.1 by Vimeo.com, Inc.


UPDATE SC IDOL: TWO BECOME ONE


KASAMBAHAY BILL IN THE HOUSE


Girasoles para colorear


Presence Quotes – Positive Quotes


EASY COME, EASY GO


Love with Heart Breaking Quotes


Re:Mutton Pies (lleechef)


Ka longiing longsem kaba skhem bad kaba khlain ka pynlong kein ia ka...


Vimeo 10.7.0 by Vimeo.com, Inc.


FORECLOSURE OF REAL ESTATE MORTGAGE


FORTUITOUS EVENT


Pokemon para colorear


Sapos para colorear


Smile Quotes


Letting Go Quotes


Love Song lyrics that marks your Heart


RE: Mutton Pies (frankie241)


Hato lada ym dei namar ka jingpyrshah jong U JJM Nichols Roy (Bah Joy) ngin...


Long Distance Relationship Tagalog Love Quotes