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 :

ODBC SQL Server VC++


Sujet :

MFC

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 57
    Points : 31
    Points
    31
    Par défaut ODBC SQL Server VC++
    Bonjour,

    Debutant en gestion de base de données avec Visual C++, je cherche un peu d'aide au pres d'une ame charitable
    En effet j'ai une base sql server distante auquel j'aimerai acceder pour effectuer diverses requetes ...
    Mais je suis un peu perdu dans la maniere dont je vais m'y connecter ...
    A priori il faut que j'utilise la fonction open de la classe cdatabase mais je vois pas trop comment faire ...Le driver sql server je vois mais pas l'adresse ip, l'id et le mot de passe ...

    Help ...

  2. #2
    Rédacteur
    Avatar de abelman
    Inscrit en
    Février 2003
    Messages
    1 106
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 1 106
    Points : 2 629
    Points
    2 629
    Par défaut
    Tout se passe dans la chaine de connexion
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    CString sConnect = "DSN=nomdetasourceodbc;UID=nomuser;PWD=motdepasse;Database=nombdd";
    db.OpenEx(sConnect, CDatabase::noOdbcDialog|CDatabase::useCursorLib); // par exemple
    Voir MSDN pour CDatabase

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 57
    Points : 31
    Points
    31
    Par défaut
    Merci ...
    J'ai donc reussi à me connecter a la base de données, mais il reste un hic ... J'aimerai savoir si il est possible de specifier l'adresse ip de la source de données, le type de driver à utiliser et enfin une authentification sql dans la commande openEx ou est on obligé de creer une source de données préalablement ??

  4. #4
    Rédacteur
    Avatar de abelman
    Inscrit en
    Février 2003
    Messages
    1 106
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 1 106
    Points : 2 629
    Points
    2 629
    Par défaut
    Pour l'ODBC, il faut toujours créer préalablement une source de données. C'est dans la source que tu spécifies l'ip de ton serveur.
    Pour ce qui es de l'authentification, tout se passe dans la chaine de connexion.

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 57
    Points : 31
    Points
    31
    Par défaut
    merci AbelMan ...
    C bcp plus clair maintenant !!

    Vu que mon reservoir d'interrogations n'est pas encore vide, je te soumets une autre petite question :
    Voici mon code pour supprimer un tuple d'une table :

    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
     
    extern "C" __declspec(dllexport) int DLL_DeleteCount(CString strClient,CString strPhone)
    {
     
    	if(!m_bDBConnected)
    	{
    		return 0;
    	}
    	CRecordset recset(&m_DataBase);
    	CString strRequete;
    	strRequete = "SELECT * FROM account WHERE acid_productName='"+strClient+"'";
    	recset.Open(CRecordset::forwardOnly,strRequete,CRecordset::readOnly);
     
    	strRequete = "DELETE FROM multi_cli where productName='"+strClient+"' AND cli='"+strPhone+"'";
     
    	TRY
    	{
    		m_DataBase.ExecuteSQL( strRequete );
    	}
     
    	CATCH(CDBException, e)
    	{
    		AfxMessageBox("Database error: "+e->m_strError);
    		return 0;
    	}
     
    	END_CATCH
     
     
    	return 1;
    }
    Et "Monsieur PC" me repond : "Connection is busy with result for another hstmt"!!

    As tu deja eu le probleme, a priori ca vient de la commande SQLExecute...

    A ton avis pour supprimer, ajouter ou editer un tuple d'une mieux vaut utiliser cette commande ou utiliser des RecordSet???

    Merci d'avance ...

  6. #6
    Rédacteur
    Avatar de abelman
    Inscrit en
    Février 2003
    Messages
    1 106
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 1 106
    Points : 2 629
    Points
    2 629
    Par défaut
    Logique.
    "Monsieur PC ne fait que ce qu'on lui demande"
    1 - Tu veux faire une suppression dans ta base. Dans ce cas pourquoi fais tu un select juste avant ? tu n'as pas à faire de SELECT et donc pas de recordset à ouvrir.
    2 - Techniquement, ça lève une exception car tu n'as pas fermé le recordset.
    Si tu tiens à faire un SELECT avant ton DELETE, n'oublie pas de faire
    Avant toute autre requête sur ta base de données.

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 57
    Points : 31
    Points
    31
    Par défaut

    heureusement que j'ai mis cet avatar ...
    Sinon c une bonne solution de faire tout par ce biais la ?(SQLExecute)

  8. #8
    Rédacteur
    Avatar de abelman
    Inscrit en
    Février 2003
    Messages
    1 106
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 1 106
    Points : 2 629
    Points
    2 629
    Par défaut
    Pour les requêtes INSERT, DELETE, UPDATE et autres ne retournant pas de jeu de données c'est CDatabase::ExecuteSQL
    Pour les requêtes SELECT et autres retournant des données c'est CRecordSet::Open

  9. #9
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 10
    Points : 7
    Points
    7
    Par défaut probleme avec la connexion odbc oracle
    bonjour,

    j'ai vu que vous discutiez sur le pb de la connexion odbc.
    voila, j'ai fais un petit programme de test pour tester la connexion odbc mais j'ai des erreurs de thread

    Linking...
    nafxcwd.lib(thrdcore.obj) : error LNK2001: unresolved external symbol __endthreadex
    nafxcwd.lib(thrdcore.obj) : error LNK2001: unresolved external symbol __beginthreadex
    Debug/test.exe : fatal error LNK1120: 2 unresolved externals
    Error executing link.exe.


    voici le petit programme que je souhaite tester:

    #include <afxdb.h>


    void main()
    {
    CDatabase con;

    try
    {
    con.OpenEx( _T( "DSN=ma_source;UID=mon_login;PWD=mon_pwd" ),
    CDatabase::openReadOnly | Database::noOdbcDialog );
    }
    catch(CDBException *f)
    {
    }
    }

    si quelqu'un a une solution a mon pb, je le remercie d'avance.

  10. #10
    Rédacteur
    Avatar de abelman
    Inscrit en
    Février 2003
    Messages
    1 106
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 1 106
    Points : 2 629
    Points
    2 629
    Par défaut


    Dans le Menu Projet aller dans
    Propriétés de ton projet (tout en bas)
    Propriétés de configuration
    C++
    Génération de code
    Bibliothèque Runtime = Débogage multithread (/MTd) pour la version DEBUG
    Biblipthèque Runtime = multithread (/MT) pour la version Release

  11. #11
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 10
    Points : 7
    Points
    7
    Par défaut probleme avec la connexion odbc oracle
    je te remercie.
    ca c'est bien compilé.
    mnt je passe à la suite

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

Discussions similaires

  1. [SQL] pb connection distante odbc SQL SERVER
    Par Le fut dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 07/02/2007, 17h35
  2. Réponses: 3
    Dernier message: 18/01/2007, 11h48
  3. [Microsoft][ODBC SQL Server] 6 + ASP
    Par Opo dans le forum ASP
    Réponses: 2
    Dernier message: 21/11/2006, 09h45
  4. Lien ODBC SQL Server
    Par Praline dans le forum Oracle
    Réponses: 1
    Dernier message: 20/10/2006, 15h04
  5. Creation de ODBC sql Server
    Par lessoy dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 26/05/2006, 16h11

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