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

MFC Discussion :

requete sql en c++


Sujet :

MFC

  1. #1
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2009
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2009
    Messages : 26
    Par défaut requete sql en c++
    Bonjour,

    J'utilise Visual Studio 2008, mon projet est en MFC basé sur des boites de dialogue, utilissant le jeu de caractères Unicode.

    J'utilise wampserver pour créer une base de donnée qui s'appelle "Client", pour le moment j'ai créer q'une seule table "nd", composée de 8 champs.

    Ce que je veux faire, c'est faire un systeme d'identification.
    Donc, dans wampserver j'ai créé un nouvel utilisateur nommé par exemple "utilisateur" avec un mot de passe "0000".

    J'utilise la requete suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    if(mysql_real_connect(mysql,"localhost",Ident,MotDePasse,"Client",0,NULL,0))
    Ident et MotDePasse sont 2 CString qui contiennent respectivement le nom "utilisateur" et le mot de passe "0000"

    Le problème c'est que j'ai l'erreur suivante :
    'mysql_real_connect'*: impossible de convertir le paramètre 3 de 'CString' en 'const char *'

    Merci de votre aide.

  2. #2
    Membre éclairé Avatar de Trunks
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2004
    Messages
    534
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2004
    Messages : 534
    Par défaut
    Quelle est la signature de mysql_real_connect() ?
    D'après le message du compilateur, il s'agit d'un const char* pour le 3e paramètre.
    Or, tu lui passes un CString qui a un operateur:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    operator LPCTSTR() const;
    qui convertit implicitement ton CString en LPCTSTR (const TCHAR*).

    TCHAR
    => wchar_t si Unicode
    => char si Ansi

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    #if _UNICODE
    #typedef wchar_t TCHAR
    #else
    #typedef char TCHAR
    #endif
    Vu que ton projet est en unicode, ça revient à dire que le 3e paramère est de type const wchar_t* et non pas const char*.

    La solution serait de déclarer la variable Indent de type char* ou peut-être qu'il existe une version de mysql_real_connect() Unicode.

  3. #3
    Membre éprouvé
    Avatar de TheGzD
    Homme Profil pro
    Ingénieur/ Docteur en Informatique
    Inscrit en
    Avril 2007
    Messages
    1 327
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Ingénieur/ Docteur en Informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 327
    Par défaut
    Utilise la fonction GetBuffer() de CString.

    Ça devrait marcher à mon avis.

  4. #4
    Membre éclairé Avatar de Trunks
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2004
    Messages
    534
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2004
    Messages : 534
    Par défaut
    Citation Envoyé par TheGzD Voir le message
    Utilise la fonction GetBuffer() de CString.

    Ça devrait marcher à mon avis.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    LPTSTR GetBuffer(int nMinBufLength);
    La fonction renvoie un LPTSTR , donc le problème reste le même ...

  5. #5
    Membre éprouvé
    Avatar de TheGzD
    Homme Profil pro
    Ingénieur/ Docteur en Informatique
    Inscrit en
    Avril 2007
    Messages
    1 327
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Ingénieur/ Docteur en Informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 327
    Par défaut
    Si t'aimes t'amuser tu peux convertir tes cractères : http://msdn.microsoft.com/en-us/library/84x924s7(VS.80).aspx

  6. #6
    Membre éclairé Avatar de Trunks
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2004
    Messages
    534
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2004
    Messages : 534
    Par défaut
    Voici des fonctions que j'ai fait pour convertir facilement d'un jeu de caractère à un autre utilisant WideCharToMultiByte() :

    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
    43
    44
    45
    46
    47
    48
    49
    size_t ConvertAnsiToUnicode(LPWSTR &lpDest, LPCSTR lpSrc, size_t cbSrcLen)
    {
    	size_t cbDestLen;
     
    	cbSrcLen = (cbSrcLen == -1) ? strlen(lpSrc) : cbSrcLen;
    	cbDestLen = MultiByteToWideChar(CP_ACP, 0, lpSrc, cbSrcLen, NULL, 0);
    	lpDest = new WCHAR[cbDestLen + 1];
    	MultiByteToWideChar(CP_ACP, 0, lpSrc, cbSrcLen, lpDest, cbDestLen);
    	lpDest[cbDestLen] = 0;
     
    	return cbDestLen;
    }
     
    size_t ConvertUnicodeToAnsi(LPSTR &lpDest, LPCWSTR lpSrc, size_t cbSrcLen)
    {
    	size_t cbDestLen;
     
    	cbSrcLen = (cbSrcLen == -1) ? wcslen(lpSrc) : cbSrcLen;
    	cbDestLen = WideCharToMultiByte(CP_ACP, 0, lpSrc, cbSrcLen, NULL, 0, NULL, NULL);
    	lpDest = new CHAR[cbDestLen + 1];
    	WideCharToMultiByte(CP_ACP, 0, lpSrc, cbSrcLen, lpDest, cbDestLen, NULL, NULL);
    	lpDest[cbDestLen] = 0;
     
    	return cbDestLen;
    }
     
    LPTSTR ConvertAnsiToT(LPCSTR lpSrc)
    {
    	LPTSTR lpDest;
     
    #ifdef UNICODE
    	ConvertAnsiToUnicode(lpDest, lpSrc);
    #else
    	lpDest = _tcsdup(lpSrc);
    #endif
    	return lpDest;
    }
     
    LPTSTR ConvertUnicodeToT(LPCWSTR lpSrc)
    {
    	LPTSTR lpDest;
     
    #ifdef UNICODE
    	lpDest = _tcsdup(lpSrc);
    #else
    	ConvertUnicodeToAnsi(lpDest, lpSrc);
    #endif
    	return lpDest;
    }

  7. #7
    Membre chevronné Avatar de stephdim
    Profil pro
    Inscrit en
    Août 2007
    Messages
    462
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 462
    Par défaut
    il y a CStringA et CStringW suivant le besoin ...

    @+

  8. #8
    Membre éclairé Avatar de Trunks
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2004
    Messages
    534
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2004
    Messages : 534
    Par défaut
    Citation Envoyé par stephdim Voir le message
    il y a CStringA et CStringW suivant le besoin ...

    @+
    Seulement à partir de VC++ 7.0

  9. #9
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2009
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2009
    Messages : 26
    Par défaut
    Merci à tous

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

Discussions similaires

  1. Problème Requete SQL et QuickReport
    Par arnaud_verlaine dans le forum C++Builder
    Réponses: 7
    Dernier message: 07/01/2004, 09h31
  2. Prob de requete sql et variable
    Par agent-zaizai dans le forum ASP
    Réponses: 11
    Dernier message: 21/10/2003, 16h54
  3. requete sql
    Par autumn319 dans le forum ASP
    Réponses: 22
    Dernier message: 10/09/2003, 16h46
  4. Paramètre requete SQL (ADOQuery)
    Par GaL dans le forum C++Builder
    Réponses: 3
    Dernier message: 30/07/2002, 11h24
  5. Resultat requete SQL
    Par PierDIDI dans le forum Bases de données
    Réponses: 2
    Dernier message: 23/07/2002, 13h43

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