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 :

Creer un lien ODBC vers une source db Oracle ....


Sujet :

MFC

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 82
    Points : 54
    Points
    54
    Par défaut Creer un lien ODBC vers une source db Oracle ....
    kelkun pourrai m'aider à crée dynamiquement un lien ODBC vers une database Oracle.
    merci

  2. #2
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Points : 17 323
    Points
    17 323
    Par défaut
    salut,
    regarde dans la faq si tu ne trouves pas ton bonheur ...
    http://c.developpez.com/faq/vc/?page=ODBC

  3. #3
    Expert éminent sénior

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 751
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 751
    Points : 10 667
    Points
    10 667
    Billets dans le blog
    3
    Par défaut
    Avec SQLConfigDataSource.
    Petit exemple pour SqlServer (en QT):
    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
    /*
    *	OdbcWrapper : classe encapsulant l'utilisation d'ODBC pour la manipulation
    *				  de source de données.
    *				  Les sources crées / manipulées sont des sources locales 
    *				  (spécifiques à l'utilisateur courant)
    */
     
    #ifndef ODBCWRAPPER_H
    #define ODBCWRAPPER_H
     
    class QWidget;
    class QString;
     
    class OdbcWrapper
    {
    public:
    	/// crée une source ODBC avec authentification faite par SqlServer
    	static bool CreateDSN(
    		const QString & SourceName,		/// nom de la source ODBC
    		const QString & SourceDescr,	/// description
    		const QString & Server,			/// nom du serveur
    		const QString & DatabaseName	/// nom de la base de données
    		);
     
    	/// affiche la boite d'édition manuelle de la source ODBC dont le nom
    	/// est donné
    	static void ConfigureDSN(
    		QWidget * Parent,					/// Widget parent du dialogue
    		const QString & SourceName		/// nom de la source ODBC
    		);
     
    	/// supprime source ODBC dont le nom est donné
    	static bool RemoveDSN(
    		const QString & SourceName		/// nom de la source ODBC
    		);
     
    	/// teste si la source donnée est déjà créée
    	static bool IsExistingDSN(
    		const QString & SourceName		/// nom de la source ODBC
    		);
     
    	/// en cas d'erreur, cette fonction renvoie un message explicatif
    	static QString GetLastErrorMsg();
    };
     
    #endif
    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
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    #include "OdbcWrapper.h"
     
    #include <qwidget.h>
     
    #define WIN32_LEAN_AND_MEAN
    #include <windows.h>
    #include <odbcinst.h>
     
    /// crée une source ODBC avec authentification faite par SqlServer
    bool OdbcWrapper::CreateDSN(
    	const QString & SourceName,		/// nom de la source ODBC
    	const QString & SourceDescr,	/// description
    	const QString & Server,			/// nom du serveur
    	const QString & DatabaseName	/// nom de la base de données
    	)
    {
    	std::string odbc_cfg_params;
        odbc_cfg_params += "DSN=";
    	odbc_cfg_params += SourceName.data();
    	odbc_cfg_params += '\0';
     
        odbc_cfg_params += "Description=";
    	odbc_cfg_params += SourceDescr.data();
    	odbc_cfg_params += '\0';
     
    	odbc_cfg_params += "Server=";
    	odbc_cfg_params += Server.data();
    	odbc_cfg_params += '\0';
     
        odbc_cfg_params += "Database=";
    	odbc_cfg_params += DatabaseName.data();
    	odbc_cfg_params += '\0';
     
    	odbc_cfg_params += "Trusted_Connection=no";
    	odbc_cfg_params += '\0';
     
        BOOL ret = ::SQLConfigDataSource(
    		NULL,
    		ODBC_ADD_DSN, 
    		"SQL Server",
    		odbc_cfg_params.c_str() );
     
    	return ret == TRUE;
    }
     
    /// affiche la boite d'édition manuelle de la source ODBC dont le nom
    /// est donné
    void OdbcWrapper::ConfigureDSN(
    	QWidget * Parent,					/// Widget parent du dialogue
    	const QString & SourceName		/// nom de la source ODBC
    	)
    {
    	HWND hwnd = Parent->winId();
     
    	std::string odbc_cfg_params;
        odbc_cfg_params += "DSN=";
    	odbc_cfg_params += SourceName.data();
    	odbc_cfg_params += '\0';
     
        ::SQLConfigDataSource(
    		hwnd,
    		ODBC_CONFIG_DSN, 
    		"SQL Server",
    		odbc_cfg_params.c_str() );
    }
     
    /// supprime source ODBC dont le nom est donné
    bool OdbcWrapper::RemoveDSN(
    	const QString & SourceName		/// nom de la source ODBC
    	)
    {
    	std::string odbc_cfg_params;
        odbc_cfg_params += "DSN=";
    	odbc_cfg_params += SourceName.data();
    	odbc_cfg_params += '\0';
     
        BOOL ret = ::SQLConfigDataSource(
    		NULL,
    		ODBC_REMOVE_DSN, 
    		"SQL Server",
    		odbc_cfg_params.c_str() );
     
    	return ret == TRUE;
    }
     
    /// teste si la source donnée est déjà créée
    bool OdbcWrapper::IsExistingDSN(
    	const QString & SourceName		/// nom de la source ODBC
    	)
    {
    	// on teste l'existence / l'accès de la clé dans la BDR
    	// à HKCU\Software\ODBC\ODBC.INI\<source_name>
     
    	std::string hkey_path = 
    		"Software\\ODBC\\ODBC.INI\\";
    	hkey_path += SourceName.data();
     
    	HKEY hKey;
    	if ( ::RegOpenKeyEx(
    		HKEY_CURRENT_USER,
    		hkey_path.c_str(),
    		0,
    		KEY_READ,
    		&hKey ) == ERROR_SUCCESS )
    	{
    		::RegCloseKey( hKey );
    		return true;
    	}
    	return false;
    }
     
    /// en cas d'erreur, cette fonction renvoie un message explicatif
    QString OdbcWrapper::GetLastErrorMsg()
    {
    	DWORD ErrorCode;
    	const int ErrorMsgMaxSize = 1000;
    	char ErrorMsg[ ErrorMsgMaxSize ];
    	WORD ErrorMsgSize;
     
    #ifdef SQLInstallerError // UNICODE...
    #undef SQLInstallerError
    #endif
    	if ( ::SQLInstallerError(
    		1,
    		&ErrorCode,
    		ErrorMsg,
    		ErrorMsgMaxSize,
    		&ErrorMsgSize ) == SQL_SUCCESS )
    	{
    		return ErrorMsg;
    	}
    	return "<Erreur inconnue>";
    }

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 82
    Points : 54
    Points
    54
    Par défaut
    merci beaucoup, cella m'a bien aidé.

    j'ai fais une petite fonction pour Oracle.
    bien sur il faut initialier un objet de type stDSN et lui passer les bon param.

    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
     
    struct stDsn
    {
    	CString strOdbcDriverName;
    	CString strServerName;
    	CString strDsnName;
    	CString strUserId;
    	CString strPassword;
     
    };
     
     
    BOOL CMyDatabase::CreateDynamicOracleDSN(stDsn stDsnTemp)
    {
    	char* pBuf;
    	CString strDSN,strConnect;	
    	strDSN.Format("DSN=%s",stDsnTemp.strDsnName);
     
    	//Recreate DSN
    	SQLConfigDataSource(NULL,ODBC_REMOVE_DSN,stDsnTemp.strOdbcDriverName,strDSN);
    	SQLConfigDataSource(NULL,ODBC_REMOVE_SYS_DSN,stDsnTemp.strOdbcDriverName,strDSN);
    	strConnect.Format(	"DSN=%s#"
    						"UID=%s#"
    						"PWD=%s#"
    						"SERVER=%s#", stDsnTemp.strDsnName,stDsnTemp.strUserId,stDsnTemp.strPassword,stDsnTemp.strServerName);
     
     
    	int iLength = strConnect.GetLength();
    	pBuf = strConnect.GetBuffer(iLength);
    	for (int i=0; i< iLength; i++)
    		if (pBuf [i] == '#') pBuf [i] = 0;
    	// Creation du DSN SYSTEM
    	BOOL bResult = SQLConfigDataSource(NULL,ODBC_ADD_DSN,"Oracle dans OraHome92",strConnect);
     
    	return bResult;
    }
    ca marche super bien

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

Discussions similaires

  1. [AC-2007] lien ODBC vers une base Oracle
    Par yassine.benjelloun dans le forum Access
    Réponses: 0
    Dernier message: 23/11/2011, 12h13
  2. Exportation des données vers une source ODBC
    Par Tchen33 dans le forum 4D
    Réponses: 2
    Dernier message: 15/06/2009, 17h24
  3. passer des arguments depuis un lien hypertxte vers une page php
    Par killer_instinct dans le forum Langage
    Réponses: 5
    Dernier message: 28/04/2007, 12h18
  4. lien odbc vers une base oracle
    Par fatati dans le forum Oracle
    Réponses: 1
    Dernier message: 12/01/2007, 10h49
  5. [FLASH MX2004 PRO] Soucis vers une source
    Par sanosuke85 dans le forum Flash
    Réponses: 4
    Dernier message: 25/12/2006, 16h51

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