ODBC User für ODBC Verbindung abfragen
-
Ich schreib an einem Datenbankprogramm, und bin bei der Planung auf ein Problem gestossen:
SQLHENV m_henv; // Environmenthandle für SQL-API // Initialisieren der ODBC-Umgebung zum Auslesen ::SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &m_henv); ::SQLSetEnvAttr(m_henv, SQL_ATTR_ODBC_VERSION, (SQLPOINTER) SQL_OV_ODBC3, SQL_IS_INTEGER); ::SQLAllocEnv(&m_henv); // Auslesen der ODBC-Quellen und Anzeigen in ComboBox UCHAR NameDSN[SQL_MAX_DSN_LENGTH + 1]; UCHAR InfoDSN[512]; SWORD InfoLen, DSNLen; // Ein Element aus der ODBC-Quellenliste auslesen while (::SQLDataSources(m_henv, SQL_FETCH_NEXT, NameDSN, sizeof(NameDSN), &DSNLen, InfoDSN, sizeof(InfoDSN), &InfoLen) != SQL_NO_DATA_FOUND) { // Einfügen des ausgelesenen Elementes in die ComboBox m_odbclist.AddString(CString(NameDSN)); }
So Frage ich die bestehenden ODBC Verbindungen ab, und gebe sie in einer Listbox aus.
Jetzt meine Frage kann ich irgendwie ermitteln ob es für den DSN Eintrag einen Default User gibt ?
Oder gibts ne Möglichkeit den Standard ODBC Dialog da einzubinden, der einem
dann direkt die ODBC Verbindungsdaten liefert ?Devil
-
Hi,
hmm... sehr interessant.
Grundsätzlich findest Du alle Infos zu den ODBC-Einstellungen (jedenfalls alle System-DNS-Einträge) in der Registry:
char Buffer[1024]; CRegKey Key; DWORD dwCount = sizeof( Buffer); CString strReg = "SOFTWARE\\ODBC\\ODBC.INI\\" + "DNS-Name"; if(Key.Open(HKEY_LOCAL_MACHINE,strReg,KEY_READ)==ERROR_SUCCESS) { Key.QueryValue(Buffer,"User",&dwCount); // in Buffer steht Dein User }
Viel Spaß
Grüße LukeX