Liaison entre les bases de donnés et une application c#

Soyez le premier à donner votre avis sur cette source.

Vue 14 625 fois - Téléchargée 4 498 fois

Description

Montre l'utilisation d'une interface pour la simplicité, et la flexibilité de connexion à différentes base de données de type MySQL, ACCESS, EXCEL, BASE TEXTE.

Source / Exemple :


using System;
using System.Collections.Generic;
using System.Text;
using System.Data;

namespace Linker
{

    /// <summary>
        /// retourne les anomalie de connexion en cas d'erreur
        /// </summary>
        /// <returns>string</returns>
    public delegate void retourAnomalie(object Anomalie);

    /// <summary>
    /// Interface de connexion au base de données
    /// </summary>
    public interface ILinkerable
    {

        #region "fonction"
        /// <summary>
        /// Obtient la chaine de connexion qui permet l'accés à la base de données
        /// </summary>
        /// <returns>string</returns>
        string ObtenirChaineConnexion();
        
        /// <summary>
        /// Récupére le résultat de la requete SQL dans une DataTable
        /// </summary>
        /// <param name="requete"></param>
        /// <returns>DataTable</returns>
        DataTable ExecuterRequeteSQL(string requete);

        /// <summary>
        /// Récupére le résultat de la requete SQL par référence dans une DataTable
        /// </summary>
        /// <param name="requete"></param>
        /// <param name="TableResultat"></param>
        void ExecuterRequeteSQL(string requete, ref DataTable TableResultat);

        /// <summary>
        /// Récupére le résultat d'une requete de type COUNT,SUM,...
        /// </summary>
        /// <param name="requete"></param>
        /// <returns>int</returns>
        int ExecuterRequeteSQLScalar(string requete);

        /// <summary>
        /// Envoi une requete sans retour de table, seulement en retour le nombre de ligne affectée
        /// </summary>
        /// <param name="requete"></param>
        /// <returns>int</returns>
        int ExecuterRequeteSQLNoQuery(string requete);

        /// <summary>
        /// permet de mettre à jour la chaine de connexion suite à une modification des propiétès
        /// </summary>
        void ReinitialisationConnexion();

        /// <summary>
        /// Test si la chaine de connexion est valide
        /// </summary>
        /// <returns>bool</returns>
        bool TestConnexion();

        /// <summary>
        /// Récupére la liste des bases (schéma) présent dans l'environement de la base de données
        /// </summary>
        /// <returns>Liste des bases existantes</returns>
        DataTable ObtenirListeBases();

        /// <summary>
        /// Récupére la liste des tables présent dans une BASE (schéma)
        /// </summary>
        /// <returns>Liste des tables existante dans une base de données</returns>
        DataTable ObtenirListeTable();

        /// <summary>
        /// Récupére le schéma des données. Nom de colonne et le type de colonne
        /// </summary>
        /// <returns>Schéma d'une table sous forme d'une DataTable</returns>
        DataTable ObtenirSchemaTable();

        /// <summary>
        /// Récupére les index de la table
        /// </summary>
        /// <returns>retourne les index de la table de la base de données</returns>
        DataTable ObtenirIndexTable();
        #endregion

        /// <summary>
        /// Obtient le schéma de connexion
        /// </summary>
        /// <returns>table contenant le schéma de connexion</returns>
        DataTable GetSchema();

        /// <summary>
        /// Obtient le schéma de connexion spécifié
        /// </summary>
        /// <param name="value">choix du schéma</param>
        /// <returns>table contenant le schéma de connexion</returns>
        DataTable GetSchema(string value);

        /// <summary>
        /// Obtient le schéma de connexion spécifié selon un type pé-défini
        /// </summary>
        /// <param name="value">Type pré-défini de schéma</param>
        /// <returns>table contenant le schéma de connexion</returns>
        DataTable GetSchema(enumTypeSchema value);

        #region "Propiétés"

        /// <summary>
        /// Définit le type d'instance réalisé
        /// </summary>
        enumTypeLinker TypeConnexion { get; }

        /// <summary>
        /// Retourne les messages d'anomalies
        /// </summary>
        string ANOMALIE { get; }

        /// <summary>
        /// Adresse IP du serveur ou Adresse du fichier de la base de données
        /// </summary>
        string Adresse { get; set; }

        /// <summary>
        /// Port de connexion pour un serveur IP(facultatif)
        /// </summary>
        uint PortConnexion { get; set; }

        /// <summary>
        /// Login de connexion à la base de données
        /// </summary>
        string Identifiant { get; set; }

        /// <summary>
        /// Mot de passe de l'utilisateur pour la connexion à la base de Données
        /// </summary>
        string MotDePasse { get; set; }

        /// <summary>
        /// Nom de la base sur laquelle le programme travaille(facultatif)
        /// </summary>
        string NomBase { get; set; }

        /// <summary>
        /// Nom de la table sur laquelle le programme travaille(facultatif)
        /// </summary>
        string NomTable { get; set; }

        /// <summary>
        /// Temps avant la déconnexion automatique à la base de données
        /// </summary>
        uint TimeOut {get; set;}

        #endregion

 
        /// <summary>
        /// variable déclenchant la récupération des erreurs !
        /// </summary>
        event retourAnomalie Anomalie;

    }// Fin de l'interface
}// Fin du NameSpace

Conclusion :


Ce code (complet dans le zip) est très facilement adaptable pour son usage personnel.

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

bonjour,

mon compilateur VS2013 affiche que 'Linker.exe' ne contient pas une méthode 'Main' statique appropriée pour un point d'entrée

j'ai correctement reconfiguré le using (pour MySql.Data),
mais je bloque sur la localisation du main()

y'a t'il une autre façon de démarrer le projet svp?

je démarre en CSharp alors , je ne connais pas forcément déjà, toutes les ficelles !

d'avance merci, Cédric
Messages postés
14916
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
25 octobre 2020
447 > Cédric
Bonsoir,

Ce projet est un projet de bibliothèque de classe, autrement dit un dll.
Donc ça ne s'exécute pas.
Pour le tester il faut ajouter un projet qui s'exécute (console, winform, wpf, etc.). Et référencer la dll ou le projet dans la dll dans le second.

Mais ça n'est pas du c#, c'est de la programmation en général.
Messages postés
21
Date d'inscription
mardi 6 mai 2008
Statut
Membre
Dernière intervention
13 août 2013

Merci du conseil. Effectivement une source en anglais peut-être comprise par tout le monde. En anglais on partage donc plus...(c'est le but de code-sources)

@+
Messages postés
71
Date d'inscription
jeudi 2 octobre 2003
Statut
Membre
Dernière intervention
12 septembre 2013

Ah ok donc pas de problèmes à ce niveau là :-)
Pour en revenir au nommage des fonctions, variables, commentaires etc... Pour ma part, il est préférable de le faire anglais car si jamais ton code est repris par un non francophone, il ne sera pas compris. En plus la plupart des mots anglais dans le dev. sont plus court que la signification française et sans accents (qui peut peut-être poser des problèmes à la compilation, je n'ai jamais essayé).
C'est surtout une ouverture à l international, et les francophones qui dev. Parlent un minimum anglais car tous les franeworks sont en anglais :)
Voilà, c'est un avis personnel.
Ps. Je travaille avec des allemands et quand tu tombe sur un code en allemand, tu souffres...
Messages postés
21
Date d'inscription
mardi 6 mai 2008
Statut
Membre
Dernière intervention
13 août 2013

Pour les identifiants, il n'y a aucun danger il concernce une VM qui se trouve dans le domaine privé. Je retirerai ce soir les identifiants pour faire plus propre. Merci.

Ecrire les fonctions en anglais et/ou les commentaires ?

@+
Akiko Nyuki
Afficher les 6 commentaires

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.