Ok, lo posto tutto.
codice:
Imports System.Data.SqlClient
Public Class DbParser
Private TDB As String
Private PathDb As String
Private ServerDb As String
Private NomeDb As String
Private UidDb As String
Private PwdDb As String
Private ODBCName As String
Private DbConn As Object
Private ConnString As String
Private MessaggioErrore As String
Private RecInteressati As Int64
Private LocalDA As Object
Private LocalDS As New DataSet
Private LocalCmd As Object
Private Trans As Object
Public Property TipoDb() As String
Get
Return TDB
End Get
Set(ByVal NTipo As String)
TDB = NTipo
End Set
End Property
Public Property NomeODBC() As String
Get
Return ODBCName
End Get
Set(ByVal NODBC As String)
ODBCName = NODBC
End Set
End Property
Public Property FilePath() As String
Get
Return PathDb
End Get
Set(ByVal NPath As String)
PathDb = NPath
End Set
End Property
Public Property NomeServer() As String
Get
Return ServerDb
End Get
Set(ByVal NServer As String)
ServerDb = NServer
End Set
End Property
Public Property NomeDatabase() As String
Get
Return NomeDb
End Get
Set(ByVal NDb As String)
NomeDb = NDb
End Set
End Property
Public Property UseridAccesso() As String
Get
Return UidDb
End Get
Set(ByVal NUid As String)
UidDb = NUid
End Set
End Property
Public Property PwdAccesso() As String
Get
Return PwdDb
End Get
Set(ByVal NPwd As String)
PwdDb = NPwd
End Set
End Property
Public ReadOnly Property MsgErrore() As String
Get
Return MessaggioErrore
End Get
End Property
Public ReadOnly Property RecordsInteressati() As Int64
Get
Return RecInteressati
End Get
End Property
Public Function Connetti() As Boolean
Try
Select Case TDB
Case "0" 'ODBC
ConnString = ODBCName
DbConn = New Data.Odbc.OdbcConnection(ConnString)
LocalDA = New Data.Odbc.OdbcDataAdapter
LocalCmd = New Data.Odbc.OdbcCommand
Case "1" 'access
ConnString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + PathDb + ";User Id=admin;Password=" + PwdDb + ";"
DbConn = New Data.Oledb.OleDbConnection(ConnString)
LocalDA = New Data.OleDb.OleDbDataAdapter
LocalCmd = New Data.OleDb.OleDbCommand
Case "2" 'SqlServer
ConnString = "Provider=sqloledb;Data Source=" + ServerDb + ",1433;Network Library=DBMSSOCN;Initial Catalog=" + NomeDb + ";User ID=" + UidDb + ";Password=" + PwdDb + ";"
DbConn = New Data.SqlClient.SqlConnection(ConnString)
LocalDA = New Data.SqlClient.SqlDataAdapter
LocalCmd = New Data.SqlClient.SqlCommand
Case "3" 'MySQL ODBC 3.51
ConnString = "DRIVER={MySQL ODBC 3.51 Driver};SERVER=" + ServerDb + ";PORT=3306;DATABASE=" + NomeDb + "; USER=" + UidDb + ";PASSWORD=" + PwdDb + ";OPTION=3;"
DbConn = New Data.Odbc.OdbcConnection(ConnString)
LocalDA = New Data.Odbc.OdbcDataAdapter
LocalCmd = New Data.Odbc.OdbcCommand
Case "4" 'PostgreSQL
ConnString = "DRIVER={PostgreSQL Unicode};SERVER=" + ServerDb + ";port=5432;DATABASE=" + NomeDb + ";UID=" + UidDb + ";PWD=" + PwdDb + ";"
DbConn = New Data.Odbc.OdbcConnection(ConnString)
LocalDA = New Data.Odbc.OdbcDataAdapter
LocalCmd = New Data.Odbc.OdbcCommand
End Select
DbConn.Open()
LocalCmd.Connection = DbConn
Return True
Catch ex As Exception
MessaggioErrore = "Impossibile connettersi al DB." & ControlChars.CrLf & "Errore restituito: " & ex.Message
Return False
End Try
End Function
Public Function EseguiSQL(ByVal StrQ As String) As Boolean
If StrQ = "" Then
MessaggioErrore = "Stringa query non valida!"
Return False
Exit Function
End If
Try
LocalCmd.CommandText = StrQ
RecInteressati = LocalCmd.ExecutenonQuery()
Return True
Catch ex As Exception
MessaggioErrore = "Errore nell'esecuzione del comando." & ControlChars.CrLf & "Errore restituito: " & ex.Message
Return False
End Try
End Function
Public Function Estrai(ByVal StrQ As String, ByRef ExtDS As DataSet, ByVal NomeTab As String, ByVal Reimposta As Boolean) As Boolean
Dim ECmd As Object
Try
Select Case TDB
Case "0", "3", "4"
ECmd = New Data.Odbc.OdbcCommand(StrQ, DbConn)
Case "1"
ECmd = New Data.OleDb.OleDbCommand(StrQ, DbConn)
Case "2"
ECmd = New Data.SqlClient.SqlCommand(StrQ, DbConn)
End Select
LocalDA.selectcommand = ECmd
If Reimposta Then
ExtDS = New DataSet("Elenco")
ExtDS.Clear()
End If
LocalDA.fill(ExtDS, NomeTab)
Return True
Catch ex As Exception
MessaggioErrore = "Impossibile estrarre i dati." & ControlChars.CrLf & "Errore restituito: " & ex.Message
Return False
End Try
End Function
Public Function MaxPk(ByVal NomeTabella As String, ByVal NomeCampo As String) As Long
Dim StrQ As String
Dim LocDset As New DataSet
StrQ = "select max(" & NomeCampo & ") as maxpk from " & NomeTabella
If Estrai(StrQ, LocDset, "estrazione", True) Then
If LocDset.Tables("esrazione").Rows(0).Item("maxpk") Is System.DBNull.Value Then
Return 1
Else
Return LocDset.Tables("esrazione").Rows(0).Item("maxpk") + 1
End If
Else
MsgBox(MessaggioErrore, MsgBoxStyle.Critical, "Errore in estrazione nuova Primary Key")
End If
End Function
Public Sub BeginTrans()
Trans = DbConn.BeginTransaction(System.Data.IsolationLevel.Serializable)
LocalCmd.Transaction = Trans
End Sub
Public Sub RollBackTrans()
Trans.RollBack()
End Sub
Public Sub CommitTrans()
Trans.Commit()
End Sub
End Class
Un po' lungo...