Problème avec classe Sqlconnection

Signaler
Messages postés
14
Date d'inscription
jeudi 30 août 2007
Statut
Membre
Dernière intervention
17 novembre 2009
-
Messages postés
2641
Date d'inscription
mercredi 2 juin 2004
Statut
Membre
Dernière intervention
8 janvier 2014
-
Hello,

            string szCnStr = WindowsFormsApplication2.Properties.Settings.    
            _Default.Database1ConnectionString;
            string host = "serveur local;";
            string user = "Admninistrateur;";
            string password = ";";
            string database = "Connexions de données/Database1.sdf;";
            MessageBox.Show(szCnStr);
            string param = host + user + password + database;

            try
            {
                using (SqlConnection sqlCon = new SqlConnection(param))

                    sqlCon.Open();
            }

            catch 
            {
                MessageBox.Show("connexion=echec");
            }



Je pensais que passer le contenu de la propriété "WindowsFormsApplication2.Properties.Settings.Default.Database1ConnectionString;" était un moyen infaillible de passer les paramètres au constructeur de la classe Sqlconnection.
Mais ça ne marche pas, j'obtiens un message d'erreur qui me dit que la connexion ne peut-être établie.
Alternativement, j'ai essayé de passer les paramètres à la main et anglais et en français, mais la connexion ne se fait toujours pas.
J'ai essayé d'enregistrer une macro mais le code qui est généré est en VB.net.

-j'ai vérifié que SQL server autorisait les connexions distantes
-j'ai créer une exception dans mon firewall (macafee) pour SQL browser et SQL server 2005.


Une idée quelqu'un?

Merci.

35 réponses

Messages postés
2641
Date d'inscription
mercredi 2 juin 2004
Statut
Membre
Dernière intervention
8 janvier 2014
16
Salut, as-tu essayer de créer un SQLConnection à la main ?

genre : SQLConnection sqlC = new SQLConnection("ma chaine de connexion...")

Arrive tu à te connecter avec une telle construction ?

Chris...
- La vérité n'est pas ailleurs, elle est sous le nez de chacun, quelques mouvements neuronale permettent de l'entrevoir -
MCPD (webform-winform) / MCSA / MCDST / MCT
Messages postés
14
Date d'inscription
jeudi 30 août 2007
Statut
Membre
Dernière intervention
17 novembre 2009

Salut Chirs,

Oui j'ai essayé -d'ailleurs, il y a encore des traces dans mon code (le string "param"). J'ai essayé avec localhost, serveur local, j'ai essayé différent trucs, mais ça ne marche pas plus. Ça plante, même un peu plus vite.
C'est parce que j'avais trop l'impression de tâtonner que j'ai opté pour le remplissage en recopiant la propriété connectionstring.

@+
Messages postés
2641
Date d'inscription
mercredi 2 juin 2004
Statut
Membre
Dernière intervention
8 janvier 2014
16
ok donc déjà si en direct cela ne marche pas il y a un problème dans ta chaine de connection, est tu en version < à SQL 2000


Chris...
__________________________________________________________________________
- La vérité n'est pas ailleurs, elle est sous le nez de chacun, quelques mouvements neuronale permettent de l'entrevoir -
[color=blue]MCPD (webfor
Messages postés
57
Date d'inscription
mercredi 11 juin 2008
Statut
Membre
Dernière intervention
18 novembre 2009

Petit site utile pour les connections string : http://www.connectionstrings.com/

Qu'affiche "MessageBox.Show(szCnStr);"?
Messages postés
14
Date d'inscription
jeudi 30 août 2007
Statut
Membre
Dernière intervention
17 novembre 2009

@Chris,

j'ai installé SQL Server 2005 (developer edition)

@Sodams MessageBox.Show(szCnStr) retourne:

Data Source=|DataDirectory|\Database1.sdf

Database1.sdf est bien la DB que j'essaie d'atteindre.


Merci

@+
Messages postés
2641
Date d'inscription
mercredi 2 juin 2004
Statut
Membre
Dernière intervention
8 janvier 2014
16
DataBase1.sdf ??

Normalement un SqlConnection c'est : Data Source=NomDuPC\Instance;Initial Catalog=BaseParDefault;Integrated Security=True

Et avec cela ça devrait aller

Chris...
- La vérité n'est pas ailleurs, elle est sous le nez de chacun, quelques mouvements neuronale permettent de l'entrevoir -
[color=blue]MCPD (webfor
Messages postés
156
Date d'inscription
mardi 4 novembre 2003
Statut
Membre
Dernière intervention
28 décembre 2010

C'est ce que j'allais demandé. SDF c'est quoi. CBoulas ta signature elle merde :)

PROTEUS
Messages postés
2641
Date d'inscription
mercredi 2 juin 2004
Statut
Membre
Dernière intervention
8 janvier 2014
16
oui j'ai vu, merci prot

Chris...
- La vérité n'est pas ailleurs, elle est sous le nez de chacun, quelques mouvements neuronale permettent de l'entrevoir -
MCPD (webform-winform) / MCSA / MCDST / MCT
Messages postés
14
Date d'inscription
jeudi 30 août 2007
Statut
Membre
Dernière intervention
17 novembre 2009

Hello,

à partir d'un projet windows application, j'ai ajouté une base de donnée locale

Projet<ajouter nouvel élément<base de données locales.

Un assistant ajoute automatiquement un dataset. Dans l'explorateur de serveurs l'objet Database1.sdf apparait.


Il existe une autre manière plus simple? (et qui marche, la mienne est assez intuitive mais ne fonctionne pas).
Messages postés
57
Date d'inscription
mercredi 11 juin 2008
Statut
Membre
Dernière intervention
18 novembre 2009

Tu peux récupérer la propriété connection string en sélectionnant ton serveur dans l'explorateur de serveur. Connection string apprait dans les propriétés.
Messages postés
2641
Date d'inscription
mercredi 2 juin 2004
Statut
Membre
Dernière intervention
8 janvier 2014
16
regarde à la façon codage :

Dim ds as new dataset()

dim SQLC as new sqlconnection(...)
dim da as new sqldataadapter("select...", sqlc)

da.Fill(ds)

Et là ton DataSet est rempli par la requette Select qui lui est connecté à ta base via le SqlConnection, tu peu aussi simplifier comme tel :

dim da as new sqldataadapter("select...", new SqlConnection(...))

Chris...
- La vérité n'est pas ailleurs, elle est sous le nez de chacun, quelques mouvements neuronale permettent de l'entrevoir -
MCPD (webform-winform) / MCSA / MCDST / MCT
Messages postés
2641
Date d'inscription
mercredi 2 juin 2004
Statut
Membre
Dernière intervention
8 janvier 2014
16
le pb en faisant comme tu l'a fait est que VS a créer tout un tas de choses pas forcément nécéssaire, mais en revanche il t'a fait le update, delete de tes tables


Chris...
- La vérité n'est pas ailleurs, elle est sous le nez de chacun, quelques mouvements neuronale permettent de l'entrevoir -
MCPD (webform-winform) / MCSA / MCDST / MCT
Messages postés
14
Date d'inscription
jeudi 30 août 2007
Statut
Membre
Dernière intervention
17 novembre 2009

Hum,

J'ai contourné le problème en installant une base de donnée "basée sur les services(.mdf)" plutôt qu'une base de données locale (.sdf) (en fait je ne sais pas trop la différence, si quelqu'un a une explication).

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);




La connexion fonctionne mais pas la création de la table. Qu'est-ce qui cloche?
Messages postés
57
Date d'inscription
mercredi 11 juin 2008
Statut
Membre
Dernière intervention
18 novembre 2009

Que se passe-t'il si ta connexion échoue, tu exécutes quand même ta requête?
Messages postés
2641
Date d'inscription
mercredi 2 juin 2004
Statut
Membre
Dernière intervention
8 janvier 2014
16
ce qui cloche : Les droits de l'utilisateur


Chris...
- La vérité n'est pas ailleurs, elle est sous le nez de chacun, quelques mouvements neuronale permettent de l'entrevoir -
MCPD (webform-winform) / MCSA / MCDST / MCT
Messages postés
14
Date d'inscription
jeudi 30 août 2007
Statut
Membre
Dernière intervention
17 novembre 2009

je suis connecté en administrateur et la table n'est pas protégée.
Pour une question de droits, le compilateur devrait me retourner une erreur, non?

Effectivement, si la connexion échoue, la requête va quand même partir.


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");
                }



Voilà, le nouveau code, lorsque je l'exécute, je n'ai pas d'erreur et j'ai une message box qui me dit que la table a été créée. Cependant quand je regarde dans l'explorateur de serveur, je ne vois pas de nouvelle table dans la database1.
Messages postés
57
Date d'inscription
mercredi 11 juin 2008
Statut
Membre
Dernière intervention
18 novembre 2009

Petit quizz : A quel moment exécutes-tu ta requête?
Messages postés
2641
Date d'inscription
mercredi 2 juin 2004
Statut
Membre
Dernière intervention
8 janvier 2014
16
En fait le compilateur ne te renverra rien, c'est la base qui te renvoi une erreur qu'elle transmet à ton compilateur. Mais ne admin, tu doit pouvoir updater ce que tu veux.

juste, je vois que tu as bien fait ton SQLCommand, mais il n'a aucune connection à ta base...


Chris...
- La vérité n'est pas ailleurs, elle est sous le nez de chacun, quelques mouvements neuronale permettent de l'entrevoir -
MCPD (webform-winform) / MCSA / MCDST / MCT
Messages postés
57
Date d'inscription
mercredi 11 juin 2008
Statut
Membre
Dernière intervention
18 novembre 2009

De plus, tu n'as besoin que de SqlCommand pour exécuter ta requête.

SqlCommand sqlCommand = new SqlCommand(cmd,SqlCon);
sqlCommand.ExecuteNonQuery();
Messages postés
2641
Date d'inscription
mercredi 2 juin 2004
Statut
Membre
Dernière intervention
8 janvier 2014
16
de plus :

SqlDataAdapter Sqldata = new SqlDataAdapter();
                    string cmd = "CREATE TABLE securities2(Name char(30),Date datetime(10), Price money(10))";
                    Sqldata.SelectCommand = new SqlCommand(cmd);


est simplifiable par :

string cmd = "CREATE TABLE securities2(Name char(30),Date datetime(10), Price money(10))";
SqlCommand sc = new SqlCommand(cmd);
sc.executeNonQuery();


Chris...
- La vérité n'est pas ailleurs, elle est sous le nez de chacun, quelques mouvements neuronale permettent de l'entrevoir -
MCPD (webform-winform) / MCSA / MCDST / MCT