Mit der ATL auf eine Datanbank mittels ODBC zugreifen



  • Hallo,

    ich muss in meinem Projekt mittels ATL und über ODBC auf eine Datenbank zugreifen und diese auslesen. Soweit stellt das auch kein Problem dar.

    Allerdings muss für das Projekt der DSN-Name änderbar sein.

    Ist bestimmt nur eine Kleinigkeit wenn man weiß, wo und wie ... also ...
    Wo und wie kann ich einen zusammengestellten Connection-String übergeben und damit die Datenbank öffnen?

    ich verwende zum entwickeln das Visual Studio.NET 2003, also dadurch auch die ATL 7.1.

    Grüße,
    -mh



  • Hi,

    Zuallererst:
    Ich möchte dich jetzt nicht auf eine falsche Spur bringen, denn ich benutze kein ATL.
    Aber vielleicht hilft dir ja folgende Zeile, die ich benutze, um unter MFC über ODBC zu einem SQL-Server zu connecten:

    CDatabase my_DB;
    
    ...
    
    sprintf((char*)InStr,"DSN=%s;SERVER=%s;UID=%s;DATABASE=%s;PWD=%s",
    strDSN.c_str(),strSERVER.c_str(),strUID.c_str(),strDB.c_str(),sqlc_Passwd);
    
    int ret = my_DB.OpenEx((LPCSTR)InStr,CDatabase::openReadOnly);
    

    Falls für den Treiber dann noch Informationen fehlen, öffnet sich ein Popup.

    Und in der FAQ findest du auch noch ein Tipp, falls du die DSN-Treiber enumerieren musst.



  • Hallo,

    danke für die Antwort, aber leider hilfts mir nicht wirklich.

    Es gibt bei der ATL zwar auch eine Open()-Funktion, der man einen Connection-String übergeben "könnte", allerdings wird die Funktion durch die OpenAll()-Funktion gekapselt und auch dadurch aufgerufen.

    Ein Ändern der OpenAll Funktion ist leider nicht möglich, da diese als echtes Objekt eingebunden ist. Auch das Überschreiben der Funktion ist leider nicht möglich.

    Ein direkter Aufruf der Open()-Funktion würde zwar funktionieren und öffnet die Datenbank, allerdings fehlt dann der Aufruf der OpenRowset()-Funktion ...
    und, wie sollte es anders sein ... diese ist auch als Objekt eingebunden und man hat keinen direkten zugriff darauf.


Anmelden zum Antworten