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

Windows Forms Discussion :

Requête access exécutée mais sans résultat


Sujet :

Windows Forms

  1. #1
    Membre habitué
    Inscrit en
    Octobre 2005
    Messages
    259
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Octobre 2005
    Messages : 259
    Points : 126
    Points
    126
    Par défaut Requête access exécutée mais sans résultat
    Bonjour,

    Je réalise une appli qui se connecte à une BD access.
    Je créé une connexion que j'ouvre au lancement de l'appli.

    Voici le code la classe qui gère l'accès à la BD:

    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
     class dbConnect
        {
            OleDbConnection sscaCnx;
            String chaineCnx = "provider = microsoft.jet.oledb.4.0 ; data source = ssca.mdb";
     
            public dbConnect()
            {
                try
                {
                    //Création de la connexion
                    sscaCnx = new OleDbConnection(chaineCnx);
                }
                catch (OleDbException e)
                {
                    MessageBox.Show("Erreur ACCESS:\n" + e.Message, "Erreur de connexion à la base de données", MessageBoxButtons.OK, MessageBoxIcon.Error);
                } 
            }
     
            //Méthode permettant d'exécuter une requête qui
            //ne renvoie pas de résultat (INSERT, UPDATE, DELETE)
            public bool executeQuery(String rqt)
            {
                try
                {
                    //Ouverture de la connexion
                    sscaCnx.Open();
     
                    //exécution de la requête
                    OleDbCommand cmd = new OleDbCommand(rqt, sscaCnx);
                    cmd.ExecuteNonQuery();
     
                    //Fermeture de la connexion
                    sscaCnx.Close();
                    return true;
                }
                catch (Exception e)
                {
                    MessageBox.Show(e.Message, "Erreur d'exécution d'une requête");
                    return false;
                }
            }
    	}
    Ensuite à partir d'une autre classe, j'appelle la méthode qui execute la requete:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    myConnection = new dbConnect();
     
                String maRqt = "Insert into membres values ('4', 'LeNom', 'LePrenom', '15.12.1895', '3', '40');";
                bool Ok = myConnection.executeQuery(maRqt);
                if (Ok)
                    Console.Beep();
    Ma BD contient les champs suivants:
    id, id_famille, nom, prenom, naissance, status, cotisation
    Le champ id est auto-incrémente

    Lorsque j'écris la requete comme indiqué au-dessus, il me dit qu'il manque un champ (6 au lieu de 7)

    Si j'écris la requete suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    String maRqt = "Insert into membres values ('0', '4', 'LeNom', 'LePrenom', '15.12.1895', '3', '40');";
    Ca marche (il y a le beep de la console), mais dans ma table, je n'ai pas le nouveau tuple que je viens d'inserer

    Qqun a-t-il une idée du problème?

    Merci d'avance pour votre aide

  2. #2
    Membre habitué
    Inscrit en
    Octobre 2005
    Messages
    259
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Octobre 2005
    Messages : 259
    Points : 126
    Points
    126
    Par défaut
    L'erreur vient en réalisté de cette ligne là:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    String chaineCnx = "provider = microsoft.jet.oledb.4.0 ; data source = ssca.mdb";
    plus particulièrement de data source = ssca.mdb

    Si je lui met le chemin complet, il effectue la requete.
    J'aimerais simplement lui dire que le fichier ssca.mdb se trouve dans le meme répertoire que les fichiers sources du projet. J'ai essayé plusieurs trucs mais rien ne marche....

  3. #3
    Membre éprouvé Avatar de guitoux1
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 011
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 011
    Points : 1 256
    Points
    1 256
    Par défaut
    Pour ta chaine de connexion, le mieux est de passer par VS. Il te génère la chaine de connexion proprement, t'as plus qu'à la copier/coller.

    Sinon si t'as eu un beep() alors que l'enregistrement ne s'est pas fait, peut-être devrait tu faire

    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
    25
    26
            //Méthode permettant d'exécuter une requête qui
            //ne renvoie pas de résultat (INSERT, UPDATE, DELETE)
            public bool executeQuery(String rqt)
            {
                bool ret = false;
                try
                {
                    //Ouverture de la connexion
                    sscaCnx.Open();
     
                    //exécution de la requête
                    OleDbCommand cmd = new OleDbCommand(rqt, sscaCnx);
                    ret = (1 == cmd.ExecuteNonQuery());
                }
                catch (Exception e)
                {
                    MessageBox.Show(e.Message, "Erreur d'exécution d'une requête");
                }
                finally
                {
                    //Fermeture de la connexion
                    sscaCnx.Close();
                 }
     
                 return ret;
            }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    bool Ok = myConnection.executeQuery(maRqt);
                if (Ok)
                    Console.Beep();

  4. #4
    Membre expérimenté Avatar de bossun
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    1 359
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2002
    Messages : 1 359
    Points : 1 443
    Points
    1 443
    Par défaut
    et ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    String chaineCnx = "provider = microsoft.jet.oledb.4.0 ; data source =" + Application.StartupPath + "ssca.mdb";

  5. #5
    Membre habitué
    Inscrit en
    Octobre 2005
    Messages
    259
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Octobre 2005
    Messages : 259
    Points : 126
    Points
    126
    Par défaut
    Merci

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

Discussions similaires

  1. Réponses: 13
    Dernier message: 23/08/2012, 15h28
  2. Requête qui dure longtemps sans résultat
    Par SALMHSN dans le forum PL/SQL
    Réponses: 13
    Dernier message: 03/05/2011, 12h04
  3. Réponses: 6
    Dernier message: 15/09/2009, 11h18
  4. [MySQL] Requête SUBSTRING et CHAR_LENGTH sans résultat
    Par Anduriel dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 25/08/2006, 12h50
  5. Pb de COUNT et GROUP BY simple mais sans requête imbriquées
    Par vanquish dans le forum Langage SQL
    Réponses: 3
    Dernier message: 22/10/2004, 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