begin process at 2010 02 10 12:52:22
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C#

 > 

Base de données

 > 

SQL Server

 > 

probleme de chaine de connexion sql avec divers modules


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

probleme de chaine de connexion sql avec divers modules

lundi 29 juin 2009 à 14:12:53 | probleme de chaine de connexion sql avec divers modules

cudenetf

bonjour,
j'ai mis ma question sous ce theme mais je ne sui s pas sur que ce soit le bon car cela comprend aussi qques notions plus generales sur c# et la programmation en générale...
je developpe un programme qui va utiliser  des dlls que j'ai faites...
ce programme est orienté base de données
disons que j'ai créé une solution nommée utilisateur ou je met toutes mes données et traitement concernant une société de mon programme (ce programme société peut etre utilisé par plusieurs programmes travaillant ds des bases de données de nom differents mais de meme struture ( ex : un programme de compta traitant plusieurs société sur un meme ordi avec des noms de base de données differentes et des utilisateurs differents avec des droits differents sur les differentes sociétés) .
Disosn qu'il y a 3 programmes compta1, compta2 et compta3 avec ces 3 bases de données
J'ai meme une solution base de données BD qui contient les chaines de connexion que je réutilise a travers mon programme " final".
Dans ma classe société , j'ai des champs statiques : nom de société etc...
j'ai une classe variable ou je declare un objet statique societe
dans le constructeur de la classe société , je veux charger les infos contenues ds la BD sur la societe
mais au niveau de la commande cmd.executenonquery() j'ai la propriété d ela connexion qui n'est pas "établie" ,

ds mon programme main , j'ai
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            //Application.Run(new Form1());

            Class_var.set_serveur(".");
            Class_var.set_catalog("mon_catalog");
            Class_var.set_type("sql");
            Form fo =new Form1();

            if (!fo.IsDisposed)
            {
                Application.Run(fo);
            }

les fonctions set... sont censées attribuer les propriétés de la chaine de connexion mais apparemment ( j'ai placé un message box ds mon constructeur de societe qui me dit a ce moment que catalog n'est pas rempli encore ...)

Je ne sais pas si c'est tres clair ...

En fait je cherche a ce que mes elemen,ts de connexion a la base d edonnées soit "rempli" en premier lieu avant tout autre variable statique ...

est ce possible ??

Merci
lundi 29 juin 2009 à 14:49:53 | Re : probleme de chaine de connexion sql avec divers modules

krimog

Salut

Je ne suis pas sûr d'avoir bien compris : tu as plusieurs membres statiques qui, pour leur initialisation, nécessitent que certains autres membres statiques soient initialisés ?

Alors déjà, un membre statique s'initialise dès le lancement du programme, de haut en bas.

static int a = b;
static int b = 10;
// a = 0 dans l'exemple

static int b = 10;
static int a = b;
// a = 10 dans l'exemple

Cependant, si tu veux mieux contrôler leur initialisation, tu peux faire un constructeur statique (puisque ce constructeur est appelé automatiquement par le programme, il n'a pas d'opérateur de portée (public...)) dans lequel tu initialise comme tu veux et dans l'ordre que tu veux tes membres. Encore mieux, tu peux utiliser un Design Pattern : le singleton. Il te permettra de faire un objet normal mais que tu appelleras via une propriété statique.
lundi 29 juin 2009 à 15:21:21 | Re : probleme de chaine de connexion sql avec divers modules

cudenetf

merci de votre reponse rapide mais je n'ai aps tout compris non plus :-(
alors j'essaie d'expliciter un peu mieux
en fait , voila ce que j'ai :
une classe BD
dont le constructeur prend en parametre catalog
dans un premier projet

une classe societe qui contient nom_societe (et dont le constructeur charge le champ de la bd coresspondant au champ nom dans la variable statique)
        public Class_societe()
        {
            charger_infos_soc();
        }

        public static void charger_infos_soc()
        {
            Class_bd bd = new Class_bd(Class_var.get_bd_type(), Class_var.get_catalog(), Class_var.get_serveur());
            try
            {
                MessageBox.Show(Class_var.get_catalog());
                bd.cmd.CommandText = "select "
                + " soc_id,soc_nom_courant"
                + " from societe";
                bd.dataAdapter.SelectCommand = bd.cmd;
                DataTable dt = new DataTable();
                bd.dataAdapter.Fill(dt);
                if (dt.Rows.Count ==1)
                {
                  _id =Convert.ToInt32(dt.Rows[0]["soc_id"]);
                  _nom_courant = dt.Rows[0]["soc_nom_courant"].ToString();
                }
                else
                {
                    if (dt.Rows.Count > 1)
                    {
                        MessageBox.Show("Plusieurs sociétés définies !");
                    }
                    else
                    {
                        MessageBox.Show("Aucune société définie!");
                    }
                }

               
            }
            catch (Exception ex)
            {
                Class_erreur.erreur(ex.ToString());
            }
        }

une class_var qui contient une fonction statique set_catalog(string catalog)
        public static void set_catalog(string catalog)
        {
            _catalog = catalog;
        }
et get_catalog qui va retourner la chaine de connexion (enfin la partie _catalog)
et la variable statique
public static Class_societe soc = new Class_societe();

dans un 2e projet ( qui depend du 1er projet )


dans le main du 3e projet , je fais ce qui est ecrit plus haut
je le lance
Mais le 1er message que je recois c'est une erreur venant de class_societe
(donc pour l'objet créé ds class_var de mon 2e projet je presume)

donc ds le message box de charger_infos_soc , je n'ai rien (la chaine est vide) ...


Peut etre que c un defaut de conception de ma part... puis je le contourner , comment ? puis je avoir un exple de csteur statique ou de singleton

merci

lundi 29 juin 2009 à 16:13:51 | Re : probleme de chaine de connexion sql avec divers modules

krimog

Donc tu dis que la ligne : MessageBox.Show(Class_var.get_catalog()); affiche une messagebox vide.

Donc Class_var.get_catalog() renvoie "" ou null.
Et je suppose que ta méthode get_catalog() ressemble à ça : return _catalog;

Voici donc ma question : quand appelles-tu la méthode set_catalog() ?
Car si tu ne l'appelles pas avant d'utiliser la méthode get_catalog(), c'est normal d'avoir des problèmes...

PS : en ce qui concerne les constructeurs statiques et le singleton en C#, Google est là pour ça.
PPS : en C#, pour des accesseurs à des membres, on n'utilise pas de méthodes mais des propriétés, c'est beaucoup plus simple :
public static string Catalog
{
    get { return _catalog; }
    set { _catalog = value; }
}
lundi 29 juin 2009 à 17:35:12 | Re : probleme de chaine de connexion sql avec divers modules

cudenetf

merci

le set_catalog est ds le main ( cf 1er message) mais apparemment il est "utilisé" apres que les variables statiques soient créées et/ou initialisées

j'utilise set_catalog car c'est en fait une fonction qui va donner le nom du catalog aux autres variables des projets ( ex: ici le 3e projet va contenir l'info du catalog , il va le transmettre au 2e ....)
comme ca je peux créer un 4e projet qui peut egalemnt utiliser le 2e mais avec un autre catalog ... c'est pas la bonne methode ???
J'ignore encore pas mal de chose sur les projets en c# notamment au niveau de la réutilisation de projets pour d'autres programmes...

voila en fait je cherche a pouvoir réutuiliser mon projet 2 sans avoir a tout reparametrer a chaque fois... (mais en ayant toujour sla meme strucutre ... )


Cette discussion est classée dans : base, programme, données, société, connexion


Répondre à ce message

Sujets en rapport avec ce message

Datagrid+base de données [ par fryounet ] Bonjour à tous,voila je programme en C#,j'ai réalisé un DataGrid et une connexion à une base de donnée serveur,la connexion et l'affiche de la table s Base de données + Meilleur solutions [ par emmanuel9 ] Bonjour à tous, - J'ai une base de données avec dedans des tables : "Personne" "Société" "Categorie". - J 'ai une application qui comporte 3 array connexion base de données [ par maxelpiratos ] bonjour à tous,   voilà j'ai un gros soucis de connection. j'ai développé une application en C# et je veux me connecter à une base de données grace a Créer une connexion à une base de données MSACCESS trouvant dans un serveur web (dossier d'un site héberger) par VB6 [ par yousser07 ] youssef.melili@gmail.comBonjour ,j'ai tombé sur ce problème , car mon bute, c'étais créer une connexion à une base de données trouvant dans un dossier connexion avec Base de Données MySQL [ par rakyouna ] Salut,J'utilise une BD MySQL avec C#. J'ai installé un driver MySQL pour .NET mais je n'arrive à me conecter correctement à ma BD."MySql.Data" n'est p Connexion à une base de données Oracle [ par EmacLi ] Bonjour à tous.Voici ma situation:Je suis sur un réseau et j'ai installé Oracle Database 10g sur ma machine.Je travail avec Visual Studio.NET (framewo connexion base de données MySQL [ par ansizak ] Bonjour,Je souhaiterais comprendre les mécanismes de connexion à une base de donnée MySQL via une application Csharp:Je dispose de l'adresse, login et Connexion à une base de données mysql distante par GPS en C# [ par dark light ] Bonjour,je suis débutante en C# et je cherche à savoir comment je peux me connecter à une base données mysql distante via GPS! .. une simple connexion connexion à une base de données SQL Server ? [ par safi79 ] bonjour,je développe une application de gestion, en utilisant C#.je cherche à faire une connexion à une base de données SQL Server Express 2005.merci connexion à la base des données en c# [ par baby85 ] Je suis débutante en C# et je cherche le moyen de mettre le résultat d'une requete dans un tableau.Est-ce possible et si oui, comment puis-je faire?Je


Nos sponsors


Sondage...

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
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,640 sec (4)

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