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 :

Connection à une base de données


Sujet :

MFC

  1. #1
    Membre actif Avatar de lenouvo
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    252
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 252
    Points : 203
    Points
    203
    Par défaut Connection à une base de données
    bonjour,
    voilà je cherche à me connecter a une base de données SQL Server, et donc j'ai essayé la méthode de la faq :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    	CDatabase mydb; 
     
    	if( !mydb.OpenEx( _T( "ODBC;DSN=MaBdd;UID=;PWD=;" ), CDatabase::noOdbcDialog )) 
    	{ 
    		AfxMessageBox("Impossible d'ouvrir la base de donnée en lecture seule"); 
    		return; 
    	} 
    	else 
    	{ 
    		AfxMessageBox("Test d'ouverture réussi"); 
    	}
    et donc il me met l'erreur suivante lors de l'execution :

    source de données introuvable et nom du pilote non spécifié
    pourtant il n'y rien d'autre à spécifier dans la chaine de connection non?

  2. #2
    Membre éclairé
    Avatar de matazz
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    471
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 471
    Points : 668
    Points
    668
    Par défaut
    j'ai regardé ce lien (le plus complet que je connaisse sur les chaines de connexions):
    http://www.codeproject.com/database/...ionstrings.asp

    et apparement il n'y as pas besoin de
    ODBC;
    avant DSN

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    strConnect = _T("DSN=MyDSN;Uid=MyUsername;Pwd=MyPassword;");

  3. #3
    Membre actif Avatar de lenouvo
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    252
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 252
    Points : 203
    Points
    203
    Par défaut
    oui, en fait, j'ai trouvé, il faut preciser le nom de la base aussi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    CString strConnect= "DSN=DSNBaseTom;UID=;PWD=;Database=BaseTom";
    par contre j'ai au autre problème maintenant
    lorsque je veux executer une requete paramétrée de ce type :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    LPTSTR ID=5;
    LPTSTR strRequete = "INSERT INTO T_Client ([ID_Client]) VALUES ('"+ID+"') ";
    il met met l'erreur suivante :
    error C2110: cannot add two pointers

    comment résoudre ce problème?

  4. #4
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Points : 16 075
    Points
    16 075
    Par défaut
    rohhh ....
    c'est pas comme ca que fonctionne la concaténation de char !!

  5. #5
    Membre actif Avatar de lenouvo
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    252
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 252
    Points : 203
    Points
    203
    Par défaut

    je sais faire avec des CString c'est tout bête mais la je vois pas avec des char

  6. #6
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Points : 16 075
    Points
    16 075
    Par défaut
    et bien, il faut utiliser strcat
    sinon, tu peux utiliser des CString si tu préferes pour construire ta chaine, après tu pourras utiliser de la surcharge de l'opérateur const char * pour caster ton CString

  7. #7
    Membre actif Avatar de lenouvo
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    252
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 252
    Points : 203
    Points
    203
    Par défaut
    ben j'ai essaye strcat, ca marche pas (enfin je dois mal l'utiliser)
    je fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    LPTSTR ID=5; 
    LPTSTR strRequete = "INSERT INTO T_Client ([ID_Client], [ID_Add]) VALUES ('1', '"+ ";
    strcat(strRequete, ID);
    strcat(strrequete, "+"') ");
    enfin je me melange un peu les pinceaux :o

  8. #8
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Points : 16 075
    Points
    16 075
    Par défaut
    et bien, c'est parce que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    LPTSTR strRequete = "..."
    ca revient à faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    char * strRequete[] = "...."
    Ce qui fait que la mémoire disponible est allouée exactement à la taille necessaire pour stocker ce qu'il y a entre "". Donc, quand tu veux concatener, et bien ca plante parce que c'est trop grand.

    Solution, soit passer par des CString, soit allouer suffisament dès le départ

  9. #9
    Membre actif Avatar de lenouvo
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    252
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 252
    Points : 203
    Points
    203
    Par défaut
    oui mais en + ca ne compile pas puisque en fait lorsque je veux mettre un guillement dans une chaine de caractere, il faut que je l'ecrive en code ASCI (enfin cette syntaxe: '\x0022') pour que ca passe.
    donc je vais tester deja avec des CString :o

  10. #10
    Membre actif Avatar de lenouvo
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    252
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 252
    Points : 203
    Points
    203
    Par défaut
    ah en fait c'est bizarre, comme je croyais que la syntaxe pour un parametre dans une requete c'etait comme ca :
    j'ai inséré le parametre de cette maniere :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ...+ CString('\x0022') + CString('\x0043') + CString(ID)+ CString('\x0043') + CString('\x0022') +...
    mais en fait il suffit juste de voilà
    merci

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

Discussions similaires

  1. [D7] DLL impossible de connecter à une base de données
    Par Magnus dans le forum Bases de données
    Réponses: 2
    Dernier message: 30/09/2005, 14h47
  2. Réponses: 8
    Dernier message: 09/11/2004, 12h25
  3. [débutant] Connection à une base de donnée Access
    Par Lorenzox dans le forum JBuilder
    Réponses: 1
    Dernier message: 25/10/2004, 16h28
  4. Connection à une base de données
    Par rodri dans le forum Bases de données
    Réponses: 3
    Dernier message: 28/07/2004, 15h05
  5. Connection à une base de données
    Par rodri dans le forum Bases de données
    Réponses: 2
    Dernier message: 28/07/2004, 13h03

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