Précédent   Forum du club des développeurs et IT Pro > C et C++ > Bibliothèques > wxWidgets
wxWidgets Forums d'entraide pour la programmation wxWidgets en C++
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 14/05/2012, 12h17   #1
MarcusDom
Invité de passage
 
Homme
Étudiant
Inscription : 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 : 0
Points : 0
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 :
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...
MarcusDom est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/05/2012, 18h50   #2
wxXav
Membre confirmé
 
Avatar de wxXav
 
Homme Xavier Perrissoud
Développeur amateur
Inscription : décembre 2008
Messages : 139
Détails du profil
Informations personnelles :
Nom : Homme Xavier Perrissoud
Localisation : France

Informations professionnelles :
Activité : Développeur amateur

Informations forums :
Inscription : décembre 2008
Messages : 139
Points : 231
Points : 231
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'
wxXav est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/05/2012, 09h16   #3
MarcusDom
Invité de passage
 
Homme
Étudiant
Inscription : 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 : 0
Points : 0
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 :
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]
MarcusDom est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/05/2012, 10h58   #4
MarcusDom
Invité de passage
 
Homme
Étudiant
Inscription : 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 : 0
Points : 0
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 :
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...
MarcusDom est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/05/2012, 17h29   #5
wxXav
Membre confirmé
 
Avatar de wxXav
 
Homme Xavier Perrissoud
Développeur amateur
Inscription : décembre 2008
Messages : 139
Détails du profil
Informations personnelles :
Nom : Homme Xavier Perrissoud
Localisation : France

Informations professionnelles :
Activité : Développeur amateur

Informations forums :
Inscription : décembre 2008
Messages : 139
Points : 231
Points : 231
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'
wxXav est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 08h24.


 
 
 
 
Partenaires

Hébergement Web