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 :

instancier la classe Sqlconnection


Sujet :

C#

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 34
    Par défaut instancier la classe Sqlconnection
    Bonsoir,


    j'ai quelques soucis sur la façon dont on instancie la classe SqlConnection:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    private void button5_Click(object sender, EventArgs e)
            {
                dataGridView1.Visible = true;
                //String szCnStr = "server=localhost; user=Administrateur; pwd='';Database=Database1";
                string szCnStr = WindowsFormsApplication2.Properties.Settings.Default.Database1ConnectionString;
                using (SqlConnection sqlCon = new SqlConnection(szCnStr))
                {
                    sqlCon.Open();
     
     
                   }
    me retourne une erreur:

    Message="Une erreur liée au réseau ou spécifique à l'instance s'est produite lors de l'établissement d'une connexion à SQL Server. Le serveur est introuvable ou n'est pas accessible. Vérifiez que le nom de l'instance est correct et que SQL Server est configuré pour autoriser les connexions distantes. (provider: Interfaces réseau SQL, error: 26 - Erreur lors de la localisation du serveur/de l'instance spécifiés)"
    Je me demande si l'utilisation de la méthode
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    WindowsFormsApplication2.Properties.Settings.Default.Database1ConnectionString;
    est bien conforme à ce que je voudrais en faire (je voudrais m'en servir pour récupérer les paramètres server, user,pwd et nom de la DB).


    Voilà, merci de votre aide.

    @+

  2. #2
    Membre expérimenté
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Par défaut
    Salut

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WindowsFormsApplication2.Properties.Settings.Default.Database1ConnectionString;
    C'est pas une methode mais une propriété. De type string en l'occurence

    Dificille de t'aider si tu ne dis pas ce que contient ce string !

    Bon j'espère que tu ne vas pas a nouveau ouvrir un nouveau post parce que tu ne parviens pas a utiliser ou définir ce string

    Parce que sinon ca va devenir dificille de suivre les petits cailloux blanc de ton problème

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 34
    Par défaut
    Salut Olibara,

    merci de ta réponse,

    la propriété contient "Data Source=|DataDirectory|\Database1.sdf"
    (en tout cas, c'est ce qu'affiche l'instruction messagebox.show(SzCnStr))

    Database1 est la DB que j'ai effectivement ajoutée à la solution.
    je me suis sournoisement inspiré de cet article:

    J'avais cru comprendre que la méthode retournait les setting de la database ce qui me paraissait plus prudent que de hard-coder la chose.
    Apparemment, je n'ai pas dû comprendre un truc, parce que ça ne marche pas tout-à-fait comme prévu:.
    Est-ce que tu as besoin de plus d'infos? (l'essentiel de la solution est vide pour l'instant).


    @+

  4. #4
    Membre expérimenté
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Par défaut
    Perso j'utilise plutot les connection string "a la main"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "database=Machin;server=untel;User ID=moi;pwd=tralala";
    Mais ta maniere de faire est bonne
    Donc le probleme est plutot du coté du serveur de db (est-il actif ?) ou de la string de connexion

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 34
    Par défaut
    Helloww,

    je préfère utiliser la méthode de defaut.setting,
    pas seulement parce que je suis un fainéant, mais aussi parce que des données comme localhost ou le nom du user sont un coup en anglais, un coup en verlan polynésien...Donc, je ne sais jamais si c'est une erreur de code ou de langue.

    J'ai vérifier les paramètres de SQL server, les connexions distantes et locales sont autorisées.
    En revanche pour le pare-feu, je ne suis pas sûr: je viens d'autoriser SQLBrowser et SQL Server 2005 en suivant les instructions de cet article

    j'ai re-testé, ça me ressort la même erreur .

    Hum,hum, ça m'a l'air compliquée cette affaire.

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 34
    Par défaut
    je me demande si passer le contenu de la propriété
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    WindowsFormsApplication2.Properties.Settings.Default.Database1ConnectionString
    pour instancier la classe SqlConnection est vraiment équivalent à une solution
    du type:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    string host="local host;";
    string user="Administrateur;";
    string pwd="''";
    string data="database.sdf";
    Quand j'affiche le contenu de la propriété dans une messageox, j'obtiens:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Data Source=|DataDirectory|\Database1.sdf
    ce qui ressemble plus à un chemin seul qu'à l'ensemble de paramètres requis pour la connexion (localhost, password, users...).

    j'ai un doute

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 34
    Par défaut
    La base que je voulais atteindre était une base locale (.sdf), je l'ai remplacée par une base "basée sur les services" (.mdf) et la connexion fonctionne. En revanche, je n'arrive pas à créer la table.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    string lacon = DBconnexion.Properties.Settings.Default.Database1ConnectionString1;
                SqlConnection SqlCon = new SqlConnection(lacon);
     
                try
                {
                    SqlCon.Open();
                    MessageBox.Show("connexion=ok");
                }
                catch
                {
                    MessageBox.Show("connexion has failed");
                }
     
                SqlDataAdapter Sqldata = new SqlDataAdapter();
                string cmd="CREATE TABLE securities2(Name char(30),Date datetime(10), Price money(10))";
                Sqldata.SelectCommand=new SqlCommand(cmd);
    J'aurai bien ouvert un autre thread -car la question est légèrement différente- mais je sens que l'on va se moquer de moi

  8. #8
    Membre Expert
    Avatar de laedit
    Homme Profil pro
    Consultant études et développement
    Inscrit en
    Décembre 2006
    Messages
    1 344
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consultant études et développement
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 344
    Par défaut
    As-tu un message d'erreur lors de la tentative de création de la table ?

    Si oui, indique le, ça permettra d'y voir plus clair.
    Blog - Articles - Framework

    MSDN vous aide, si si, alors n'hésitez pas à y faire un tour avant de poser une question.
    Ah, et n'oubliez pas, Google peut répondre à la majorité de vos questions.

  9. #9
    Membre expérimenté
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Par défaut
    J'aurai bien ouvert un autre thread -car la question est légèrement différente- mais je sens que l'on va se moquer de moi
    Justement !

    Si tu n'avais pas déja splité to premier post, tu aurais pu facilement retrouver l'exemple que je t'avais donné pour associer la commande a une connection

    Et pour le create tu n'a pas besoin de l'adapter mais seulement la commande


  10. #10
    Membre averti
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 34
    Par défaut
    non pas de message d'erreur,

    j'ai rajouté des lignes pour être certain que la requête parte:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
     
    string lacon = DBconnexion.Properties.Settings.Default.Database1ConnectionString1;
                SqlConnection SqlCon = new SqlConnection(lacon);
                bool connection_ok = false;
                try
                {
                    SqlCon.Open();
                    MessageBox.Show("connexion=ok");
                    connection_ok = true;
     
                }
                catch
                {
                    MessageBox.Show("connexion has failed");
                }
     
                if (connection_ok == true)
                {
                    try
                    {
                        SqlDataAdapter Sqldata = new SqlDataAdapter();
                        string cmd = "CREATE TABLE securities2(Name char(30),Date datetime(10), Price money(10))";
                        Sqldata.SelectCommand = new SqlCommand(cmd);
                        MessageBox.Show("table created");
                    }
                    catch
                    {
                        MessageBox.Show("query failed");
                    }
    j'ai bien un message table created et pas de nouvelle table d'après l'explorateur de serveur.

  11. #11
    Membre expérimenté
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Par défaut
    Tu n'execute pas la commande

  12. #12
    Membre Expert
    Avatar de laedit
    Homme Profil pro
    Consultant études et développement
    Inscrit en
    Décembre 2006
    Messages
    1 344
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consultant études et développement
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 344
    Par défaut
    C'est tout à fait normal, car tu créer la command mais tu ne l'exécute pas.
    Blog - Articles - Framework

    MSDN vous aide, si si, alors n'hésitez pas à y faire un tour avant de poser une question.
    Ah, et n'oubliez pas, Google peut répondre à la majorité de vos questions.

  13. #13
    Membre expérimenté
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Par défaut
    laedit ..

    Tu fais l'écho ?

  14. #14
    Membre Expert
    Avatar de laedit
    Homme Profil pro
    Consultant études et développement
    Inscrit en
    Décembre 2006
    Messages
    1 344
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consultant études et développement
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 344
    Par défaut
    Apparemment ouais

    J'ai mis un peu de temps à poster, j'ai été interrompu par mon boss, du coup tu avais déjà répondu à ma place
    Blog - Articles - Framework

    MSDN vous aide, si si, alors n'hésitez pas à y faire un tour avant de poser une question.
    Ah, et n'oubliez pas, Google peut répondre à la majorité de vos questions.

  15. #15
    Membre averti
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 34
    Par défaut
    Nouvelles modifications:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    try
                    {
                        SqlDataAdapter Sqldata = new SqlDataAdapter();
                        string cmd = "CREATE TABLE securities2(Name char(30),Date datetime, Price money)";
                        SqlCommand SqlComm = newSqlCommand(cmd,SqlCon);                    
                        SqlComm.ExecuteNonQuery();
                        MessageBox.Show("table created");
                    }
                    catch
                    {
                        MessageBox.Show("query failed");
                    }
                }
    J'ai supprimé le try/catch pour voir les erreurs, il n'y en a pas, et pourtant je n'ai toujours pas de table dans ma base.

  16. #16
    Membre Expert
    Avatar de laedit
    Homme Profil pro
    Consultant études et développement
    Inscrit en
    Décembre 2006
    Messages
    1 344
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consultant études et développement
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 344
    Blog - Articles - Framework

    MSDN vous aide, si si, alors n'hésitez pas à y faire un tour avant de poser une question.
    Ah, et n'oubliez pas, Google peut répondre à la majorité de vos questions.

  17. #17
    Membre expérimenté
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Par défaut
    Et si tu mettais le code complet depuis l'ouverture de la connexion

    Car le code que tu montre ici, ce n'est vraissemblablement pas le code que tu utilise

    Car je doute que cette syntaxe de new soit acceptée !!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SqlCommand SqlComm = newSqlCommand(cmd,SqlCon);
    Car montrer ton code en tranche de saucisson c'est pas plus aisé à suivre que de découper un probleme de base en plusieurs post

  18. #18
    Membre averti
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 34
    Par défaut
    voilà tout le code,

    j'ai pas encore lu tout le matos que laedit a envoyé.
    je reviens quand j'ai fini.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
     
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    using System.Data.SqlClient;
     
    namespace DBconnexion
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }
     
            private void button1_Click(object sender, EventArgs e)
            {
     
                string lacon = DBconnexion.Properties.Settings.Default.Database1ConnectionString1;
                SqlConnection SqlCon = new SqlConnection(lacon);
                bool connection_ok = false;
                try
                {
                    SqlCon.Open();
                    MessageBox.Show("connexion=ok"+"  " +lacon);
                    connection_ok = true;
     
                }
                catch
                {
                    MessageBox.Show("connexion has failed");
                }
     
                if (connection_ok == true)
                {
                    try
                    {
                        SqlDataAdapter Sqldata = new SqlDataAdapter();
                        string cmd = "CREATE TABLE securities2(Name char(30),Date datetime, Price money)";
                        //Sqldata.SelectCommand = new SqlCommand(cmd, SqlCon);
                        SqlCommand SqlComm = new SqlCommand(cmd,SqlCon);
     
                        SqlComm.ExecuteNonQuery();
                        MessageBox.Show("table created");
     
                    }
                    catch
                    {
                        MessageBox.Show("query failed");
                    }
                }
            }
        }
    }



  19. #19
    Membre expérimenté
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Par défaut
    Pour moi ca devrait marcher

    Mais n'oublie pas de faire

    Et puis tu veriffie si ta table existe !

    Je ne connais pas les sécurités MS SQL pour eviter l'ecrasement malencontreux d'une table existante mais Par mesure de prudence je te conseille toujours de faire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "CREATE TABLE IF NOT EXISTS securities2  ..."

  20. #20
    Membre Expert
    Avatar de laedit
    Homme Profil pro
    Consultant études et développement
    Inscrit en
    Décembre 2006
    Messages
    1 344
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consultant études et développement
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 344
    Par défaut
    Citation Envoyé par olibara Voir le message
    Mais n'oublie pas de faire

    Par mesure de prudence je te conseille toujours de faire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "CREATE TABLE IF NOT EXISTS securities2  ..."
    +1 !
    Blog - Articles - Framework

    MSDN vous aide, si si, alors n'hésitez pas à y faire un tour avant de poser une question.
    Ah, et n'oubliez pas, Google peut répondre à la majorité de vos questions.

Discussions similaires

  1. [JAR]Instancier une classe d'un jar
    Par Foub dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 16/08/2005, 15h10
  2. Réponses: 3
    Dernier message: 13/08/2005, 15h18
  3. [MFC] où instancier mes classes?
    Par giova_fr dans le forum MFC
    Réponses: 3
    Dernier message: 26/07/2005, 13h15
  4. [Débutant(e)]Instancier une classe connaissant son nom (String)
    Par Invité dans le forum API standards et tierces
    Réponses: 5
    Dernier message: 17/06/2005, 11h05
  5. [Débutant(e)]servlet qui instancie une classe personelle
    Par NiBicUs dans le forum Servlets/JSP
    Réponses: 5
    Dernier message: 08/02/2005, 12h00

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