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

Waylander59 11 Messages postés vendredi 11 septembre 2015Date d'inscription 7 octobre 2015 Dernière intervention - 5 oct. 2015 à 11:06 - Dernière réponse : Waylander59 11 Messages postés vendredi 11 septembre 2015Date d'inscription 7 octobre 2015 Dernière intervention
- 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.
Afficher la suite 

3 réponses

Répondre au sujet
Waylander59 11 Messages postés vendredi 11 septembre 2015Date d'inscription 7 octobre 2015 Dernière intervention - 5 oct. 2015 à 11:40
0
Utile
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).
Commenter la réponse de Waylander59
cgandco 219 Messages postés mercredi 26 octobre 2011Date d'inscription 22 juin 2017 Dernière intervention - 5 oct. 2015 à 15:16
0
Utile
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
Commenter la réponse de cgandco
Waylander59 11 Messages postés vendredi 11 septembre 2015Date d'inscription 7 octobre 2015 Dernière intervention - 5 oct. 2015 à 16:45
0
Utile
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 :)
Commenter la réponse de Waylander59

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.