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 :

SQLCE et requête insert [Débutant]


Sujet :

C#

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2011
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2011
    Messages : 26
    Points : 15
    Points
    15
    Par défaut SQLCE et requête insert
    Bonjour à tous,
    j'ai besoin de faire un requête insert dans une base de données SQLCE.
    Malheureusement je n'y arrive pas, j'ai beau lire des pages entières mais quelque chose m'échappe.
    Comme indiqué dans un post je convertis mes " ' " en " '' " mais ça ne fonctionne toujours pas.
    Je ne vois vraiment pas ou est le problème.
    J'ai pris soin de renommer mes variables en leur type dans la base de données pour que ce soit plus clair pour vous.
    A savoir j'ai aussi un id en autoIncrement et mes ntext peuvent contenir des guillemets.
    Voici mon code :
    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
     //Remplacement des quotes
                text1 = text1.Replace("'", "''");
                text2 = text2.Replace("'", "''");
                text3 = text3.Replace("'", "''");
                text4 = text4.Replace("'", "''");
                text5 = text5.Replace("'", "''");
     
                string conString = Properties.Settings.Default.MaBaDeDonnéesConnectionString;
     
                using (SqlCeConnection con = new SqlCeConnection(conString)) {
                    con.Open();
     
                    using (SqlCeCommand com = new SqlCeCommand("INSERT INTO MaTable(ntext1, ntext2, ntext3, ntext4, ntext5, int, bit) VALUES(@ntext1, @ntext2, @ntext3, @ntext4, @ntext5, @int, @bit);", con)) {
                        com.Parameters.AddWithValue("@ntext1", ntext1); //string dans mon programme
                        com.Parameters.AddWithValue("@ntext2", ntext2); //string dans mon programme
                        com.Parameters.AddWithValue("@ntext3", ntext3); //string dans mon programme
                        com.Parameters.AddWithValue("@ntext3", ntext4); //string dans mon programme
                        com.Parameters.AddWithValue("@ntext4", ntext5); //string dans mon programme
                        com.Parameters.AddWithValue("@int", int);       //int dans mon programme
                        com.Parameters.AddWithValue("@bit", bit);       //bool dans mon programme
     
                        com.ExecuteNonQuery();
                    }
                }

  2. #2
    Membre émérite Avatar de Guulh
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    2 160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2007
    Messages : 2 160
    Points : 2 925
    Points
    2 925
    Par défaut
    Citation Envoyé par Oyabi Voir le message
    Je ne vois vraiment pas ou est le problème.
    Nous non plus, si tu ne dis pas ce qui déconne

    T'as une exception ? Si oui, laquelle?
    T'as pas d'exception mais les données ne sont pas en base?

    As-tu essayé de faire une requete simple (un select par exemple) ? Ca te permettra de savoir si le problème est à la connexion (mauvaise string ? BDD pas démarrée?) ou si c'est ta query qui n'est pas bonne.

    Quant aux guillemets, il n'ont aucune raison de poser problème, puisque tu as pris soin d'utiliser une requête paramétrée plutôt qu'une chaîne concaténée.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2011
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2011
    Messages : 26
    Points : 15
    Points
    15
    Par défaut
    Citation Envoyé par Guulh Voir le message
    Nous non plus, si tu ne dis pas ce qui déconne

    T'as une exception ? Si oui, laquelle?
    T'as pas d'exception mais les données ne sont pas en base?

    As-tu essayé de faire une requete simple (un select par exemple) ? Ca te permettra de savoir si le problème est à la connexion (mauvaise string ? BDD pas démarrée?) ou si c'est ta query qui n'est pas bonne.

    Quant aux guillemets, il n'ont aucune raison de poser problème, puisque tu as pris soin d'utiliser une requête paramétrée plutôt qu'une chaîne concaténée.
    Je n'ai pas d'exception et les données ne sont pas en base.
    Mais je pense que je suis bien connecté à la base puisque j'arrive à faire un Select.
    En faisant une trace de "com" je trouve
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     VALUES(@ntext1, @ntext2, @ntext3, @ntext4, @ntext5, @int, @bit);
    et non mes données.
    Une piste à creuser ?

  4. #4
    Membre émérite Avatar de Guulh
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    2 160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2007
    Messages : 2 160
    Points : 2 925
    Points
    2 925
    Par défaut
    Un conseil général, pour aider à la résolution des problèmes: les découper par petits bouts.
    - Crée une table avec une seule colonne, et teste si insert into bidule(truc) values('machin') marche, avec machin une valeur en dur
    - Si ça marche, essaie de faire pareil avec des paramètres
    - Si ça marche, essaie de faire pareil avec plus colonne dans ta table

    Plus spécifiquement, si j'en crois la doc, il ne faut pas de point virgule à la fin.
    Et selon la doc toujours, executenonquery renvoie un int, qui est le nombre de records modifiés. Modifie ton code en var count = con.Execute... , et fregarde la valeur de 'count', ça pourra t'aider.

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2011
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2011
    Messages : 26
    Points : 15
    Points
    15
    Par défaut
    J'ai trouvé, c'est idiot mais il faut le savoir.
    Ma base de données était à la racine de mon projet, disons :
    C:\Visual Studio\Toto\Mon projet\BDD.sdf
    Quand on compile, Visual Studio crée une copie de cette base de données dans :
    C:\Visual Studio\Toto\Mon projet\bin\Debug\BDD.sdf
    Le problème étant qu'il insérait les données dans cette seconde base.
    La solution est de remplacer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    string conString = Properties.Settings.Default.CitationsConnectionString;
    using (SqlCeConnection con = new SqlCeConnection(conString)) {
    votre code}
    Par le chemin de votre base de donnée à modifier. Dans l'exemple se serait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    string conString = "Data Source=C:\\Visual Studio\\Toto\\Mon projet\\BDD.sdf;"
    using (SqlCeConnection con = new SqlCeConnection(conString)) {
    votre code}
    N'oubliez pas de rajouter des doubles anti-slash et un point virgule à la fin.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [VBA] difficultés avec une requête INSERT
    Par elias dans le forum Access
    Réponses: 7
    Dernier message: 06/09/2005, 15h53
  2. requête insert
    Par mattoo dans le forum Langage SQL
    Réponses: 10
    Dernier message: 20/04/2005, 15h09
  3. Réponses: 4
    Dernier message: 05/04/2005, 19h28
  4. probleme requête insert.... where
    Par Amandine62 dans le forum Langage SQL
    Réponses: 7
    Dernier message: 21/02/2005, 15h26
  5. Problème sur une requête INSERT
    Par Marion dans le forum Langage SQL
    Réponses: 3
    Dernier message: 17/06/2003, 09h45

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