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

wxWidgets Discussion :

Syntaxe pour une requête SQLite


Sujet :

wxWidgets

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2012
    Messages : 22
    Points : 3
    Points
    3
    Par défaut Syntaxe pour une requête SQLite
    Bonjour,

    Voilà j'ai un soucis, je souhaite passer une requête dans une fonction mais à piori j'ai un soucis pour la conversion.

    Il ne me met pas d'erreur, mais néanmoins, la requête ne retourne rien :

    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
     
     
    bool LysisTimerApp::EssaiConnecter(wxString login, wxString mdp)
    {
      sqlite3_stmt *statement;
     
      wxString req = _("SELECT nom FROM operateur WHERE nom = '") + login + _("' AND motDePasse = '") + mdp + _("';");
     
      m_requete = req.mb_str(wxConvUTF8);
     
    if(sqlite3_prepare_v2(boiteParametres->g_handle,m_requete, -1,&statement, 0) == SQLITE_OK)
      {
        int result = 0;
     
        while(sqlite3_step(statement) != SQLITE_DONE)
        {
          if(result != SQLITE_ROW)
          {
            return true;
          }
        }
        sqlite3_finalize(statement);
      }
      return false;
    J'ai essayé cette requête sous SQLite manager et c'est passé. Ca ne peut que être une erreur de conversion...

  2. #2
    Membre averti Avatar de wxXav
    Homme Profil pro
    Développeur amateur
    Inscrit en
    Décembre 2008
    Messages
    214
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur amateur

    Informations forums :
    Inscription : Décembre 2008
    Messages : 214
    Points : 354
    Points
    354
    Par défaut
    Salut.

    Citation Envoyé par MarcusDom Voir le message
    Ca ne peut que être une erreur de conversion...
    Il y a de fortes chances que ça soit le cas.
    Le code que tu as fourni ne peut fonctionner que si tu n'utilises pas les libs wxWidgets Unicode :
    • la fonction sqlite3_prepare_v2 attends apparemment un char* pour la requête
    • avec wxString::c_str(), tu lui fournis un wchar_t* en Unicode

    Essayes de remplacer c_str par mb_str pour voir.

    Mais sinon, je te conseille d'utiliser wxSQLite qui te permettra de t'affranchir de ce genre de problèmes (enfin, normalement...)

    @+
    Xav'

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2012
    Messages : 22
    Points : 3
    Points
    3
    Par défaut
    J'ai essayé avec c_str et j'ai une erreur :

    cannot convert 'const wxChar* {aka const wchar_t*}' to 'const char*' in assignment.

    J'avais approché wxSQLite, mais on me laisse pas le choix, je dois utiliser sqlite3 sinon rien

    J'ai essayé aussi dans "l'autre sens" :

    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
     
     
    char req[500] = "INSERT INTO patients (uuidPatient,IdentifiantPatient,Nom,Prenom,dateNaissance,Sexe) VALUES ('123456','";
              strcat(req,Nom);
              char ligne1[5] = "','";
              strcat(req,ligne1);
              strcat(req,Prenom);
              char ligne2[5] = "','";
              strcat(req,ligne2);
              strcat(req,id);
              char ligne3[5] = "','";
              strcat(req,ligne3);
              strcat(req,date); 
              char ligne5[5] = "');";
              strcat(req,ligne5);
    Après j'ai le même problème je ne vois pas comment correctement convertir la requête :

    const char* requete = req.c_str();

    avec l'erreur : request for member 'c_str' in 'req', which is of non-class type char[500]

  4. #4
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2012
    Messages : 22
    Points : 3
    Points
    3
    Par défaut
    Pfff, on m'a montré mon erreur, en fait j'ai déclaré m_requete comme étant const char*.

    Du coup j'ai changé dans mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    if(sqlite3_prepare_v2(boiteParametres->g_handle,req.mb_str(), -1,&statement, 0) == SQLITE_OK)
    Heuresement que je ne t'ai pas montré le .h sinon tu l'aurais vu, et je me serai fait tapper sur les doigts...

    J'ai un autre truc : il faut que je fasse un choix de couleurs.
    On m'a parlé d'un drawRectangle, pour que je puisse créer un rectangle dans lequel s'affichera une couleur, et si l'on clique sur ce rectangle une boite de dialogue s'ouvrira pour choisir cette couleur et la remplacer dans ce rectangle.
    Pour la boite de couleurs, c'est colourDialog, pas de problème, mais je suis perdu sur le wxDC ou encore sur le wxGraphicsContext, je suis pas sûr que ce soit la bonne piste...

  5. #5
    Membre averti Avatar de wxXav
    Homme Profil pro
    Développeur amateur
    Inscrit en
    Décembre 2008
    Messages
    214
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur amateur

    Informations forums :
    Inscription : Décembre 2008
    Messages : 214
    Points : 354
    Points
    354
    Par défaut
    Salut, et désolé d'avoir mis autant de temps pour répondre.

    Pour donner à l'utilisateur la possibilité de choisir une couleur, tu as le wxColourPickerCtrl.
    Il se présente sous la forme d'un bouton dont le fond est de la couleur actuellement sélectionnée, et le texte la valeur hexadécimale de cette couleur.
    Quand tu cliques dessus, ça fait apparaître la boite de dialogue standard de sélection d'une couleur.

    Ça peut correspondre à ce que tu veux ou pas ?
    Sinon, si tu tiens absolument à le faire toi même, tu peux utiliser un simple wxPanel dont tu changes la couleur de fond, et tu interceptes l'événement "OnClick" pour faire aparaître la boite de dialogue voulue.

    A toi de voir.

    @+
    Xav'

Discussions similaires

  1. Besoin d'aide pour une requête SQLite
    Par Ryu2000 dans le forum Android
    Réponses: 2
    Dernier message: 05/06/2012, 17h25
  2. problème de syntaxe delphi pour une requête sql
    Par socooooool dans le forum Bases de données
    Réponses: 12
    Dernier message: 07/07/2006, 16h53
  3. Demande d'aide pour une requête
    Par arkzor dans le forum Requêtes
    Réponses: 3
    Dernier message: 28/12/2004, 02h40
  4. Besoin d'aide pour une Requête SQL ...
    Par Kokito dans le forum Requêtes
    Réponses: 2
    Dernier message: 07/07/2004, 11h56
  5. besoin d'aide pour une requête
    Par Damien69 dans le forum Langage SQL
    Réponses: 11
    Dernier message: 31/03/2004, 15h38

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