Composant pemettant de gérer la connexion à une base de données

Soyez le premier à donner votre avis sur cette source.

Snippet vu 11 463 fois - Téléchargée 30 fois

Contenu du snippet

Sans doute ce code a déjà été implémenté par un tiers sur ce site mais, pour ma part, j'en ai fait un composant me permettant de gérer l'ouverture et la fermeture d'une connexion à une BdD. Ainsi, tous les composants utilisent une seule et même connexion à la BdD. A chaque fois qu'une connexion est demandée, une référence à cette dernière est fournie à l'appelant.

Source / Exemple :


using System;
using System.Data.OleDb;

namespace JobManagement.Components.Data
{
	/// <summary>
	/// Représente le gestionnaire de connexion à la base de données.
	/// </summary>
	public class DataConnection
	{
		private OleDbConnection objConnect = null;
		private string strConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\\Data\\Job.mdb; Persist Security Info=false;";
		private string strErrorMessage = null;

		/// <summary>
		/// Tente d'ouvrir une connexion à la BdD et retourne
		/// un objet OledbConnection.
		/// </summary>
		public OleDbConnection getConnection
		{
			get
			{
				objConnect = new OleDbConnection(strConnectionString);
				try { objConnect.Open(); }
				catch (OleDbException objExc) {
					objConnect = null;
					strErrorMessage = objExc.Message;
				}
				return objConnect;
			}
		}
		
		/// <summary>
		/// Retourne un message d'erreur en cas d'échec de 
		/// l'ouverture ou de la fermeture de la connexion.
		/// </summary>
		public string ErrorMessage
		{
			get
			{
				return strErrorMessage;
			}
		}
		

		/// <summary>
		/// Permet d'obtenir une instance de la classe DataConnection.
		/// </summary>
		public DataConnection()
		{
		}

		/// <summary>
		/// Permet de fermer la connexion à la base de données.
		/// </summary>
		public void CloseConnection()
		{
			try
			{
				if( this.objConnect.State.ToString() == "Open" )
					this.objConnect.Close();
			}
			catch (OleDbException objExc)
			{
				this.strErrorMessage = objExc.Message;
			}
			finally
			{
				this.objConnect = null;
			}
		}

	}
}

Conclusion :


1ère étape :
Déclarer une instance de la classe DataConnection. Ex: << DataConnection objConn = new DataConnection(); >>. Jusque là, aucune connexion n'est encore ouverte à la BdD.

2ème étape :
La propriété de classe getConnection vous fournit un OledbConnection ouverte sur la BdD.
Vous pouvez à présent effectuer vos requêtes à destination de la BdD.

3ème étape :
Certes le garbage collector fait bien son boulot mais bon, il est mieux, à mon entendement, de libérer les ressources utilisées soi même. A cet effet, la méthode de classe : CloseConnection() vous permet de vous assurer que la connexion à la BdD a bien été fermée.

Toutefois, on est pas à l'abri d'une éventuelle erreur. Ainsi, en "interrogeant" la propriété de classe : << ErrorMessage >>, vous saurez l'erreur qui a été rencontrée.

Je n'ai pas la prétention de fournir une classe "parfaite". Cependant, libre à vous de l'améliorer comme bon vous semble.

Bon dev.

Gz.

A voir également

Ajouter un commentaire

Commentaire

maxvador
Messages postés
15
Date d'inscription
jeudi 15 mai 2003
Statut
Membre
Dernière intervention
14 mars 2017
-
Comment tu ferais si c'etait une base SQL serveur. Car ta classe c exactement ce que je recherchais. Ca m'a l'air simple d'utilisation et parfaitement efficace.

Merci pour ta réponse

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.