begin process at 2012 02 15 08:18:40
  Trouver un code source :
 
dans
 
Accueil > Forum > 

VB.NET et VB 2005

 > 

Base de données

 > 

ADO.NET

 > 

Connection a des BD différentes


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Connection a des BD différentes

mardi 19 décembre 2006 à 09:10:31 | Connection a des BD différentes

NETSAGE

Bonjour à tous et toutes

Je voudrais créer une class qui me permet de construire la ConnectionString dynamiquement avec la possibilité de choisir sa BD, son serveur et le domain par des choix sur des ListBox. Or, je
n'arrive pas a trouver le moyen, ou comment construire ces listes.
En claire, quelles sont les fonctions ou class qui me permettent d'obtenir ces infos pour les charger
dans les listebox ?

Si vous avez une idée, elle sera la bien venue.

Merci à tous et toutes, cordialement

lundi 15 janvier 2007 à 22:15:29 | Re : Connection a des BD différentes

Gwendal3

Salut,

Regarde du côté de dbProviderFactory

Voilà !

using System;
using System.Collections.Generic;
using System.Text;
using System.Data.Common;
using System.Configuration;
using System.Data;
using System.Collections;
using System.Reflection;
using System.Transactions;

namespace Bewise.Data
{
    /// <summary>
    /// Classe d'acces générique à une base de donnée dont le Proivder existe
    /// </summary>
    public class Generic
    {

        #region Propriétés privée ConnectionString : A Paramétrer

        private static string connectionString = "ConnectionString";

        #endregion

        #region Propriétés Privées

        private static ConnectionStringSettings connectionStringSettings;
        private static ConnectionStringSettingsCollection connectionStringsCollection;
        private static DbProviderFactory dbProviderFactory;
        private static bool cacheEnabled = true;
        private static DbCommand currentCommand;
        private static TransactionScope transactionScope;

        #endregion

        #region Propriétés Publiques

        /// <summary>
        /// Provider d'acces aux données
        /// </summary>
        public static DbProviderFactory DbProviderFactory
        {
            get
            {
                return dbProviderFactory;
            }
        }

        /// <summary>
        /// Chaine de connexion
        /// </summary>
        public static String ConnectionString
        {
            get
            {
                return connectionString;
            }
            set
            {
                connectionString = value;
            }
        }

        /// <summary>
        /// Récupère la commande courante
        /// </summary>
        public static DbCommand CurrentCommand
        {
            get
            {
                return currentCommand;
            }
        }

        #endregion

        #region Constructeur de la classe d'acces aux données Generic

        /// <summary>
        /// Constructeur de ma classe Static
        /// </summary>
        static Generic()
        {
            // Récupération de toutes les chaines de connexion
            connectionStringsCollection = ConfigurationManager.ConnectionStrings;

            // Récupération de la classe fabrique suivant le provider
            dbProviderFactory = DbProviderFactories.GetFactory(connectionStringsCollection[0].ProviderName);

        }


        #endregion

        #region Gestion de la connexion récupérer depuis un Setting

        /// <summary>
        /// Crée une connexion depuis le fichier de configuration
        /// </summary>
        /// <returns>Objet implementant DbConnection</returns>
        public static DbConnection GetConnection()
        {
            return GetConnection(ConnectionString);
        }

        /// <summary>
        /// Crée une connexion depuis le fichier de configuration
        /// </summary>
        /// <returns>Objet implementant DbConnection</returns>
        public static DbConnection GetConnection(String connectionString)
        {
            // Création de la connection
            DbConnection conn = dbProviderFactory.CreateConnection();

            // Récupération de la chaine de connexion
            connectionStringSettings = connectionStringsCollection[connectionString];

            // Affectation de la chaine de connexion
            conn.ConnectionString = connectionStringSettings.ConnectionString;

            // retour de la connexion
            return conn;
        }

        #endregion

        #region Création d'un dbCommand (et affectation à la commande courante)
        /// <summary>
        /// Créer un objet Command
        /// </summary>
        public static DbCommand CreateDbCommand(String commandText, DbConnection connection, CommandType commandType)
        {
            DbCommand command = dbProviderFactory.CreateCommand();
            command.CommandType = commandType;
            command.CommandText = commandText;
            command.Connection = connection;

            currentCommand = command;

            return command;

        }

        /// <summary>
        /// Créer un objet Command : Surcharge
        /// </summary>
        public static DbCommand CreateDbCommand(String commandText, CommandType commandType)
        {
            DbCommand command = dbProviderFactory.CreateCommand();
            command.CommandType = commandType;
            command.CommandText = commandText;
            command.Connection = GetConnection();

            currentCommand = command;

            return command;

        }
        #endregion
lundi 22 janvier 2007 à 11:28:35 | Re : Connection a des BD différentes

NETSAGE

Salut a tous et toutes;

Je pense avoir trouver une solution qui marche. L'idée est l'utilisation du DataLink qui est fournit en standard lors de l'installation de Windows (Voir les outils dans le panneau de configuration Système...). Donc, par programmation j'ai fais appel au DataLink. L'utilisateur peut ainsi paramètrer la connection string avec les provider et les bases dont il dispose. Le DataLink retourne alors la connection string que je split. Ainsi j'obtiens les segments et selon le segment provider je déclare les connections, les commandes et ainsi de suite (Voir IDBconnection pour plus d'info). Maintenant je réaliser la couche DLA indépendament du Provider et de la BD.

J'ai trouvé cette idée en croisant des recherches sur le net.  Merci a Gwendal3 pour sa réponse.

NET-SAGE
vendredi 23 février 2007 à 16:39:42 | Re : Connection a des BD différentes EURIKA

NETSAGE

Bonjour a tous;

EURIKA,

Avez-vous-compris, eh oui j'ai trouvé. Et du faite que vous êtes sympa je vous donne la solution que j'ai choisis

1 - J'ai utilisé le DataLink via vb.net pour récupérer la chaine de connection.
     (Cela permet d'être indépendant de la base)
2 - J'ai hasché la chaine obtenu en couple (cle/valeur) dans une haschtable.
     (Parmis ces couples il y a le couple (Provider/Valeur)
3 - J'ai déclaré dans le fichier de config de l'appli tous les segments d'une
      connection string sans les valeurs de chaque provider (SqlClient, OracleClient,....)
4 - Selon le provider que le DataLink ma founit, je récupere a partir du fichier config 
     les  segments qu'il faut pour la connection string.
5 - Je cherche ensuite les valeurs dans la haschtable pour chaque paramètre que j'ai
     recupéré dans le fichier config pour construire la connectionString.

Voilà le tour est joué et ça marche ?

Salut



NET-SAGE


Cette discussion est classée dans : bd, connection, class, différentes, construire


Répondre à ce message

Sujets en rapport avec ce message

Connection à une BD [ par Zouheir ] Quelqu'un peut me confier la chaine à utiliser pour se connecter à une base de données protégée par un mot de passe ?. J'ai essayé avec la suivante : Connection sécurisée a une BD Access [ par gandalfgris ] Bonjour,J'ai un probleme, je n'arrive pas a me connecter a ma base.. cette base est proteger par un groupe de travail. (.mdw). comment expliquer a ma connection access [ par tipou ] Boujour a tousvoici mon probleme je desire changer le chemin de ma bd access mais je ne veux pas changer le code dans toutes les forms alors j'ai fais Important : connexion ado sur bd access protégée par password [ par drmad ] Bonjour, si qq'un pouvait m'aider ce serait sympa.Je suis en train de développer une application pour mon mémoire en vb et j'ai une colle que je n'arr Pb connection a une database [ par sbouquet ] Bonjour!J'ai un enorme probleme mais peut etre qu'il est pas si important que ca. J'ai fait un prog qui me permet d'acceder a ma database et de la mod URGENT : Access 97 & ADO & Connection à sa propre BD [ par Foub12 ] Bonjour !Je suis en stage, et je suis désespéré car je n'arrive pas à me connecter à ma propre base sous Access 97 !J'écris ceci dans une méthode d'un connection au base de données [ par elabbassi ] Bonjour,Aidez-moi SVP(Provider=Microsoft.Jet.OLEDB.4.0;DataSource=c:\Bd.mdb;Mode=Share Deny None;Persist Security Info=False)c'est ma chaîne de connec Connection a un base Access [ par rochonweb ] Bonjours a tousJe veut me connecter, par une premiere BD Access, sur une deuxieme BD Access. Je veut , par un formulaire, aller chercher les informati Connection Combo box à une BD [ par philsandjong ] Bonjour à tousJ' ai fait un programme vb avec combo box. Le problème?quand je deroule le combo box, je ne vois pas les articles disponiblent dans la b Urgent, connection à une Bd sur un Server distant Merci [ par Nightcourrier ] Bonjour à vous,                        j'aimerais savoir comment me connecter à une base de données qui se trouve


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,593 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales