INSERT INTO ne fonctionne pas (BdD locale) [Résolu]

Signaler
Messages postés
11
Date d'inscription
vendredi 11 septembre 2015
Statut
Membre
Dernière intervention
7 octobre 2015
-
Messages postés
11
Date d'inscription
vendredi 11 septembre 2015
Statut
Membre
Dernière intervention
7 octobre 2015
-
Bonjour.

Youpi, j'ai réussi à me connecter à ma base de données locale (enfin !) ! Je vais enfin pouvoir insérer des données dans ma table ! Testons tout de suite..

        private void button1_Click(object sender, EventArgs e)
        {
            SqlCeConnection connect = new SqlCeConnection(ConfigurationManager.ConnectionStrings["DBConnectionString"].ConnectionString);
            connect.Open();

            SqlCeCommand cmd = new SqlCeCommand();
            cmd.Connection = connect;
            cmd.CommandText = "INSERT INTO [Save](Test) VALUES('D')";
            cmd.Prepare();
            

            cmd.ExecuteNonQuery();

            connect.Close();
        }



Super, j'ai aucune erreur, tout s'est bien passé !
Je vais quand même vérifier que ma valeur s'est bien insérée.. Ah.. Non.. Bon, peut être une erreur dans ma requête, sait-on jamais.
Alors.. Explorateur de serveurs, ma table (Save), nouvelle requête (copier/coller de cmd.CommandText), exécuter. Tiens, ça fonctionne, ma donnée est bien insérée..

Pourquoi alors quand je lance mon appli et que je clique sur bon bouton, ma donnée ne s'insère pas ?? :(

Merci pour votre aide !


Schéma de ma table Save :
colonne "ID", clé primaire, auto-incrément, int.
colonne "Test", autorise null, nvarchar.

3 réponses

Messages postés
11
Date d'inscription
vendredi 11 septembre 2015
Statut
Membre
Dernière intervention
7 octobre 2015

J'ai aussi testé ceci sans succès (toujours pas d'insert même si aucune erreur apparaît) :

        private void button1_Click(object sender, EventArgs e)
{
SqlCeConnection connect = new SqlCeConnection(ConfigurationManager.ConnectionStrings["DBConnectionString"].ConnectionString);
connect.Open();

SqlCeCommand cmd = new SqlCeCommand();
cmd.Connection = connect;
cmd.CommandText = "INSERT INTO [Save](Test) VALUES(@Test)";

SqlCeParameter param = null;

//param = new SqlCeParameter("@ID", SqlDbType.Int);
//cmd.Parameters.Add(param);
param = new SqlCeParameter("@Test", SqlDbType.NVarChar, 100);
cmd.Parameters.Add(param);

//cmd.Parameters[0].Value = 4;
cmd.Parameters[0].Value = "D";

cmd.ExecuteNonQuery();

connect.Close();
}



J'ai testé en ajoutant la colonne "ID" dans les paramètres mais une erreur survient me disant qu'il est impossible de modifier cette colonne (clé primaire + auto-incrément, normal).
Messages postés
219
Date d'inscription
mercredi 26 octobre 2011
Statut
Membre
Dernière intervention
22 juin 2017
9
Bonjour,

1. Place ta connection string dans une variable intermédiaire. et en debug vérifie sont chemin au cas ou tu écrirais à un autre endroit.

2. Place un Try catch et suis le déroulement en debug, au cas ou en debug ces types d'erreurs serait déasctivées dans la configuration.


Bonne journée
Messages postés
11
Date d'inscription
vendredi 11 septembre 2015
Statut
Membre
Dernière intervention
7 octobre 2015

cgandgo,

merci pour ta réponse. J'ai tout débogué déjà de base et je n'avais aucun problème, tout se passait bien.

Jusqu'à ce que tu me dises de vérifier le chemin de ma connection string. J'ai gardé celle de base dans mon app.config (avec le chemin |Directory Source|). Effectivement, cela posait problème puisque quand j'ai vérifié les propriétés, je n'avais pas le bon chemin (il allait dans mon dossier bin\debug). J'ai donc modifié ce chemin en l'écrivant en dur et ça fonctionne !

Foutu code automatiquement généré... En tout cas merci, tu as égayé ma journée :)