Problème avec classe Sqlconnection

tikam75007 Messages postés 14 Date d'inscription jeudi 30 août 2007 Statut Membre Dernière intervention 17 novembre 2009 - 16 nov. 2009 à 13:11
cboulas Messages postés 2641 Date d'inscription mercredi 2 juin 2004 Statut Membre Dernière intervention 8 janvier 2014 - 17 nov. 2009 à 12:50
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

cboulas Messages postés 2641 Date d'inscription mercredi 2 juin 2004 Statut Membre Dernière intervention 8 janvier 2014 16
16 nov. 2009 à 13:25
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
0
tikam75007 Messages postés 14 Date d'inscription jeudi 30 août 2007 Statut Membre Dernière intervention 17 novembre 2009
16 nov. 2009 à 13:49
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.

@+
0
cboulas Messages postés 2641 Date d'inscription mercredi 2 juin 2004 Statut Membre Dernière intervention 8 janvier 2014 16
16 nov. 2009 à 13:59
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
0
cs_Sodams Messages postés 57 Date d'inscription mercredi 11 juin 2008 Statut Membre Dernière intervention 18 novembre 2009
16 nov. 2009 à 13:59
Petit site utile pour les connections string : http://www.connectionstrings.com/

Qu'affiche "MessageBox.Show(szCnStr);"?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
tikam75007 Messages postés 14 Date d'inscription jeudi 30 août 2007 Statut Membre Dernière intervention 17 novembre 2009
16 nov. 2009 à 14:09
@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

@+
0
cboulas Messages postés 2641 Date d'inscription mercredi 2 juin 2004 Statut Membre Dernière intervention 8 janvier 2014 16
16 nov. 2009 à 14:24
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
0
PROTEUS91 Messages postés 156 Date d'inscription mardi 4 novembre 2003 Statut Membre Dernière intervention 28 décembre 2010
16 nov. 2009 à 14:31
C'est ce que j'allais demandé. SDF c'est quoi. CBoulas ta signature elle merde :)

PROTEUS
0
cboulas Messages postés 2641 Date d'inscription mercredi 2 juin 2004 Statut Membre Dernière intervention 8 janvier 2014 16
16 nov. 2009 à 14:38
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
0
tikam75007 Messages postés 14 Date d'inscription jeudi 30 août 2007 Statut Membre Dernière intervention 17 novembre 2009
16 nov. 2009 à 14:44
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).
0
cs_Sodams Messages postés 57 Date d'inscription mercredi 11 juin 2008 Statut Membre Dernière intervention 18 novembre 2009
16 nov. 2009 à 14:50
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.
0
cboulas Messages postés 2641 Date d'inscription mercredi 2 juin 2004 Statut Membre Dernière intervention 8 janvier 2014 16
16 nov. 2009 à 14:50
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
0
cboulas Messages postés 2641 Date d'inscription mercredi 2 juin 2004 Statut Membre Dernière intervention 8 janvier 2014 16
16 nov. 2009 à 14:54
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
0
tikam75007 Messages postés 14 Date d'inscription jeudi 30 août 2007 Statut Membre Dernière intervention 17 novembre 2009
16 nov. 2009 à 15:17
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?
0
cs_Sodams Messages postés 57 Date d'inscription mercredi 11 juin 2008 Statut Membre Dernière intervention 18 novembre 2009
16 nov. 2009 à 15:25
Que se passe-t'il si ta connexion échoue, tu exécutes quand même ta requête?
0
cboulas Messages postés 2641 Date d'inscription mercredi 2 juin 2004 Statut Membre Dernière intervention 8 janvier 2014 16
16 nov. 2009 à 15:25
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
0
tikam75007 Messages postés 14 Date d'inscription jeudi 30 août 2007 Statut Membre Dernière intervention 17 novembre 2009
16 nov. 2009 à 15:38
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.
0
cs_Sodams Messages postés 57 Date d'inscription mercredi 11 juin 2008 Statut Membre Dernière intervention 18 novembre 2009
16 nov. 2009 à 15:48
Petit quizz : A quel moment exécutes-tu ta requête?
0
cboulas Messages postés 2641 Date d'inscription mercredi 2 juin 2004 Statut Membre Dernière intervention 8 janvier 2014 16
16 nov. 2009 à 15:49
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
0
cs_Sodams Messages postés 57 Date d'inscription mercredi 11 juin 2008 Statut Membre Dernière intervention 18 novembre 2009
16 nov. 2009 à 15:51
De plus, tu n'as besoin que de SqlCommand pour exécuter ta requête.

SqlCommand sqlCommand = new SqlCommand(cmd,SqlCon);
sqlCommand.ExecuteNonQuery();
0
cboulas Messages postés 2641 Date d'inscription mercredi 2 juin 2004 Statut Membre Dernière intervention 8 janvier 2014 16
16 nov. 2009 à 15:51
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
0