INSERT INTO ne fonctionne pas (BdD locale)

Résolu
Waylander59 Messages postés 11 Date d'inscription vendredi 11 septembre 2015 Statut Membre Dernière intervention 7 octobre 2015 - 5 oct. 2015 à 11:06
Waylander59 Messages postés 11 Date d'inscription vendredi 11 septembre 2015 Statut Membre Dernière intervention 7 octobre 2015 - 5 oct. 2015 à 16:45
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.
A voir également:

3 réponses

Waylander59 Messages postés 11 Date d'inscription vendredi 11 septembre 2015 Statut Membre Dernière intervention 7 octobre 2015
5 oct. 2015 à 11:40
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).
0
cgandco Messages postés 219 Date d'inscription mercredi 26 octobre 2011 Statut Membre Dernière intervention 22 juin 2017 9
5 oct. 2015 à 15:16
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
0
Waylander59 Messages postés 11 Date d'inscription vendredi 11 septembre 2015 Statut Membre Dernière intervention 7 octobre 2015
5 oct. 2015 à 16:45
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 :)
0
Rejoignez-nous