Public Class Cl_Connexion #Region "Enumérations" Public Enum E_TypeConnexion As Byte ODBC = 0 OleDb = 1 '... autre (SQLConnection pour SQL serveur, PgConnection pour postgreSQL ext.) End Enum #End Region #Region "Variable de la classe" 'Objet qui "tien" la connexion (WithEvents pour recevoir les événement sur la connexion) 'Il est TOUJOURS mieu de déclarer tes variable en privé et de définir un accéseur ;) Private WithEvents P_ObjConnexion As System.Data.Common.DbConnection Private P_MyTypeConnexion As E_TypeConnexion #End Region #Region "Acceseur aux données" 'Public ReadOnly Property ObjConnexion() As System.Data.Common.DbConnection '<-- Permet uniquement la lecture de l'objet connexion ;) Public Property ObjConnexion() As System.Data.Common.DbConnection Get Return P_ObjConnexion End Get Set(ByVal value As System.Data.Common.DbConnection) 'Traitement de remplacement de la connexion (commit des transaction, et/ou fermer si elle est ouverte, ext.) End Set End Property #End Region #Region "Evenements retournés par la classe" Public Event ConnexionOuverte() Public Event ConnexionFermer() #End Region #Region "Fonctions/Procédures privées" Private Sub P_ObjConnexion_StateChange(ByVal sender As Object, ByVal e As System.Data.StateChangeEventArgs) Handles P_ObjConnexion.StateChange Select Case P_ObjConnexion.State Case ConnectionState.Open RaiseEvent ConnexionOuverte() Case ConnectionState.Closed RaiseEvent ConnexionFermer() Case ConnectionState.Broken '... tu auras compris le principe ^^ End Select End Sub #End Region #Region "Fonctions/Procédures public" Public Sub OuvreConnexion(ByVal ChaineDeConnexion As String, ByVal TypeDeConnexion As E_TypeConnexion) 'Si une connexion existe déjà If P_ObjConnexion IsNot Nothing Then 'Si cette connexion est ouverte If P_ObjConnexion.State = ConnectionState.Open Then 'Soit tu la ferme (histoire de rester propre) P_ObjConnexion.Close() 'Soit tu envoie une erreur 'Throw New Exception("Une connexion existe déjà et est ouverte" & vbCrLf & "Fermer cette connexion pour continuer" End If End If Select Case TypeDeConnexion Case E_TypeConnexion.ODBC 'Connexion ODBC P_ObjConnexion = New System.Data.Odbc.OdbcConnection(ChaineDeConnexion) Case E_TypeConnexion.OleDb 'Connexion OleDb P_ObjConnexion = New System.Data.OleDb.OleDbConnection(ChaineDeConnexion) Case Else 'Erreur Throw New Exception("Type de connexion non reconu") End Select P_MyTypeConnexion = TypeDeConnexion P_ObjConnexion.Open() End Sub Public Sub FermeConnexion() If P_ObjConnexion IsNot Nothing Then If P_ObjConnexion.State = ConnectionState.Open Then P_ObjConnexion.Close() Else 'Envoie une erreur ou ne fait rien End If Else 'Envoie une erreur ou ne fait rien End If End Sub ''' <summary> ''' Résumer de la fonction (pour l'intelisens) ''' </summary> ''' Définition du paramétre (tj pour l'intelisens) ''' <returns>Définition de la valeur de retour (bon je me répete pas cette fois xD)</returns> ''' <remarks>Ce block est obtenu automatiquement quand tu saisie 3 ' à la suite ;)</remarks> Public Function ExecuteQuery(ByVal Requete As String) As DataTable Dim Retour As New DataTable Dim Command As System.Data.Common.DbCommand Dim Adapteur As System.Data.Common.DbDataAdapter Select Case P_MyTypeConnexion Case E_TypeConnexion.ODBC Command = New System.Data.Odbc.OdbcCommand(Requete, P_ObjConnexion) Adapteur = New System.Data.Odbc.OdbcDataAdapter(Command) Case E_TypeConnexion.OleDb Command = New System.Data.OleDb.OleDbCommand(Requete, P_ObjConnexion) Adapteur = New System.Data.OleDb.OleDbDataAdapter(Command) Case Else 'Erreur Throw New Exception("Type de connexion non reconu") End Select Adapteur.Fill(Retour) Command = Nothing Adapteur = Nothing Return Retour End Function Public Sub ExecuteNoQuery(ByVal Requete As String) Select Case P_MyTypeConnexion Case E_TypeConnexion.ODBC Dim Command As System.Data.Odbc.OdbcCommand Command = New System.Data.Odbc.OdbcCommand(Requete, P_ObjConnexion) Command.ExecuteNonQuery() Case E_TypeConnexion.OleDb Dim Command As System.Data.OleDb.OleDbCommand Command = New System.Data.OleDb.OleDbCommand(Requete, P_ObjConnexion) Command.ExecuteNonQuery() Case Else 'Erreur Throw New Exception("Type de connexion non reconu") End Select End Sub #End Region End Class
Public Class Form1 Private Connexion As New Cl_Connexion Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 'Ici une connexion pour PostygrSQL en OleDb Connexion.OuvreConnexion("Provider=PostgreSQL OLE DB Provider;Data Source=myServerAddress;location=myDataBase;User ID=myUsername;password=myPassword;timeout=1000;", Cl_Connexion.E_TypeConnexion.OleDb) 'Lecture d'une table en base (nommer MaTable) DataGridView1.DataSource = Connexion.ExecuteQuery("SELECT * FROM MaTable") End Sub End Class