IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

Test Connection SQL


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Mai 2010
    Messages
    69
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2010
    Messages : 69
    Par défaut Test Connection SQL
    Bonjours tous le monde,

    Je suis présentement entrain de faire un programme qui possède des class qui fond des manipulations SQL.

    Je me posait quelque question sur les connections SQL ou plustot sur la manière de m'y prendre pour que mon programme soit le mieu fait possible.

    Je voudrai ouvrir une connnection sql au début du programme et l'utilisé tous le temps jusqu'a ce que l'utilisateur ferme le programme.

    Mon premier problème est que a chaque fois qu'on utilise une commande, il faut spécifier la connection a utilisé. Comme je fait pour que ma variable connection soit accecible partout pour que je puisse spécifier ma connection quand je fait des command sans avoir a toujours en recréé une.

    Mon deuxième problème vient dans le fait que je ne sais pas comment faire pour tester si ma connection est toujours active quand je fait des query dans mes classe. Il faudrai que je puisse me reconnecter immediatement et que si c'est impossible que j'empèche l'utilisateur de faire quoi que ce soit et que je l'avertisse qu'il n'y a plus de connection.

    Voila j'aimerai avoir un plan de match si on peut dire pour savoir comment faire tous cela. C'est la première fois que je fait un programme utilisant du SQL donc j'ai quelque difficulté

    merci beaucoup pour vos reponse future.

  2. #2
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 200
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 200
    Par défaut
    ce qui se fait souvent, c'est une encapsulation de tout ca

    à savoir une classe que tu instancies, tu lui donnes une requete et éventuellement des parameters et elle te retournes les valeurs dans un datatable

    après pour éviter de freezer l'appli, soit limiter le connectiontimeout, soit déporter ca sur un thread avec un event relayé sur le thread principal
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  3. #3
    Membre très actif Avatar de oussi
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2009
    Messages
    192
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2009
    Messages : 192
    Par défaut
    Salut,
    Ce que je fais moi c'est de créer une classe static(qui ne necéssite pas d'instanciation et j'y met toutes mes routines et déclarations)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    public static class Class1
        {
            public static SqlConnection con = new SqlConnection();
            public static SqlCommand cmd = new SqlCommand();
     
            //procedure pour se connecter
            public static void Connexion()
            {
                con.ConnectionString = "connectionstring que tu veux";
                con.Open();
                cmd.Connection = con;
            }
        }
    Ensuite pour appeler tes variables ou routines de code tu fais comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Class1.Connexion();
    etc

    @++

  4. #4
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Mai 2010
    Messages
    69
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2010
    Messages : 69
    Par défaut
    Salut et merci pour vos reponse,

    j'aime bien la technique de oussi. Cependant j'ai toujours la question :

    Comment je fait ensuite pour vérifier a chaque fois que je fait une requête dans mes autres class si je suis connection pour ne pas avoir d'exception.

    Car ce programme est prévu pour aller sur un appareil mobile donc il peut y avoir des déconnection et des impossibilité de reconnection et j'aimerai savoir comment géré tous cela pour pas que mon programme plante tous le temps.

    Pour Pol63 , je ne sais pas du tous comment utilisé votre technique, encapsuler tous sa et lui envoyer que des paramètre pour que tous cela marche. Je ne sais pas non plus comment les datatables marche puisque je n'ai jamais utilisé cela.

    merci

  5. #5
    Membre très actif Avatar de oussi
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2009
    Messages
    192
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2009
    Messages : 192
    Par défaut
    La technique dont parle Pol63 c'est de la Programmation Orienté Objet.

    Voila ce que je te propose :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    if (Class1.con.State == ConnectionState.Open)
                {
                    Class1.cmd.CommandText = "Select * from table";
                    Class1.cmd.ExecuteReader();
                }
                else//sinon la connexion est fermé
                {
                    MessageBox.Show("connexion fermé");
                }
    Tu peux aussi ajouter une vérification dans la procédure Connexion() qui permettra de vérifier si la con est fermé pour essayer de l'ouvrir :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    if (con.State == ConnectionState.Closed)
                {
                    con.ConnectionString = "data source=.\\sqlexpress;initial catalog=gcmdata.mdf;integrated security=true ";
                    con.Open();
                }
     
                cmd.Connection = con;
    Remarque : n'oublie pas l'utilisation du Try catch pour la gestion des exceptions dans ton application.

    @++

  6. #6
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Mai 2010
    Messages
    69
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2010
    Messages : 69
    Par défaut
    Le problème avec le connection states, c'est que si par exemple j'ouvre mon application et que je me connecte correctement et que ensuite je me deconnecte de internet le connection state va rester a open et il va me lancer une exeption quand je vait essayer de faire mes requêtre c'est pourquoi je cherche une autre technique pour la connecton sql

Discussions similaires

  1. [VB.NET] NT AUTHORITY\NETWORK SERVICE pour connection SQL
    Par Immobilis dans le forum ASP.NET
    Réponses: 2
    Dernier message: 05/01/2006, 21h49
  2. [VB.net] Connection SQL server
    Par WriteLN dans le forum Windows Forms
    Réponses: 1
    Dernier message: 19/08/2005, 17h39
  3. Problème de connection à SQL Server
    Par wsangli dans le forum MS SQL Server
    Réponses: 9
    Dernier message: 12/08/2005, 17h19

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo