(VC++6) Récupérer le type de base de données d'un lien ODBC

vow Messages postés 54 Date d'inscription mardi 18 septembre 2001 Statut Membre Dernière intervention 27 juillet 2005 - 9 janv. 2003 à 16:01
capoueidiablo Messages postés 316 Date d'inscription jeudi 9 janvier 2003 Statut Membre Dernière intervention 1 février 2010 - 24 févr. 2004 à 16:07
Bonjour,

J'ai une base de données avec sa liaison ODBC en DSN Système ("DSN1" par exemple).
J'aimerais récuperer (en langage C sur Visual C++) le type de base de données (Oracle, SQL Server, Access, ...).
Existe-il un moyen, mis à part en regardant dans le fichier ODBC.INI (ça n'est pas très propre) ?
Merci d'avance.
@++

~~~~ Vow ~~~~

6 réponses

vow Messages postés 54 Date d'inscription mardi 18 septembre 2001 Statut Membre Dernière intervention 27 juillet 2005
9 janv. 2003 à 16:52
Pour info, voici ce que j'ai fait via le fichier ODBC.INI :
(ce n'est pas très propre, je l'avoue)

char szBuff[256];
SQLGetPrivateProfileString(
"ODBC Data Sources",
szBuff,
"",
szBuff,
sizeof(szBuff),
"odbc.ini");

if (strstr(strupr(szBuff), "SQL") > 0 && strstr(strupr(szBuff), "SERVER") > 0)
{
// instructions
}
if (strstr(strupr(szBuff), "ORACLE") > 0)
{
// instructions
}
// etc...


~~~~ Vow ~~~~
0
vow Messages postés 54 Date d'inscription mardi 18 septembre 2001 Statut Membre Dernière intervention 27 juillet 2005
9 janv. 2003 à 16:57
Dans mon exemple, ça fait :
SQLGetPrivateProfileString(
"ODBC Data Sources",
"DSN1",
"",
szBuff,
sizeof(szBuff),
"odbc.ini");

~~~~ Vow ~~~~
0
cs_Kaid Messages postés 949 Date d'inscription mardi 2 octobre 2001 Statut Membre Dernière intervention 8 juillet 2006 1
9 janv. 2003 à 17:16
Est-ce que tu as essayé la fonction SQLGetInfo() ?
Je te laisse regarder la doc, en utilisant le paramètre SQL_SERVER_NAME tu arriveras peut-être à ton but.
0
vow Messages postés 54 Date d'inscription mardi 18 septembre 2001 Statut Membre Dernière intervention 27 juillet 2005
16 janv. 2003 à 11:42
Merci d'avoir répondu mais SQLGetInfo() ne fonctionne qu'avec SQL Server.
Ce que je recherche, ce n'est pas le nom du serveur, mais le type de serveur (Oracle, SQL Serveur, Access, Paradox) d'un lien ODBC, sans entrer dans le fichier système "ODBC.INI".
Le seul élément que l'on connait est le nom du DSN Système : "DSN1" dans l'exemple.

Merci de m'aider.
@++

~~~~ Vow ~~~~
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
vow Messages postés 54 Date d'inscription mardi 18 septembre 2001 Statut Membre Dernière intervention 27 juillet 2005
26 nov. 2003 à 15:20
J'en reviens à ma réponse...
SQLGetInfo permet bien de récupérer des infos divers pour des sources ODBC (pas uniquement pour SQL Server).
Mais mon problème est qu'il faut faire un SQLConnect pour y avoir accès... Ce qui ne m'intéresse pas du tout.
Une autre solution ?
Merci encore.

~~~~ Vow ~~~~
0
capoueidiablo Messages postés 316 Date d'inscription jeudi 9 janvier 2003 Statut Membre Dernière intervention 1 février 2010 1
24 févr. 2004 à 16:07
Bonjours,
je pence qu'avec SQLDataSources tu devrais trouvé ton bonheur, en effet je l'utilise dans l'une de mes applis pour cherché tout les DSN ainsi que le pilote ODBC qu'ils utilisent.

Si vous trouvez l'API qui me retournerai le nom de la base de donnée à partir du DSN ca me ferai tres plaisir :p
--Capoueidiablo--
0
Rejoignez-nous