Zu dumm für ODBC & C++



  • Hallo alle zusammen,

    ich versuche jetzt schon seit einiger Zeit eine C++-Anwendung zu schreiben, die eine Verbindung zu einer Access-Datenbank herstellt und dann die einzelnen Datensätze durchgeht. Das ganze soll auf einem Windows-Rechner laufen, die Entwicklungsumgebung ist Visual C++, aber wenn es eine Umgebungs-übergreifende Lösung gibt, wäre mir das noch lieber.

    Leider komme ich absolut nicht weiter, hab mir schon Beispiele aus einem Buch kopiert, aber selbst die liefen irgendwie nicht 😞

    Hätte hier vielleicht einer ein kleines Beispielprogramm, wie ich eine Access-Datenbank mit C++ ansprechen kann, und eventuelle Tipps, was dabei noch zu beachten ist.

    Vielen Dank im Voraus



  • Access-Datenbanken wirst du nicht plattformunabhängig bearbeiten können. Dafür ist das .mdb-Format (ich setze mal voraus, dass du das benutzt) nicht genügend dokumentiert.

    Du könntest SQLite benutzen. Musst schauen, ob das für dich ausreicht. Ansonsten, könntest du MySQL oder PostgresSQL nehmen. Die laufen auf vielen Plattformen und haben Client-Biliotheken für C und C++.

    SQLite ist am einfachsten aufzusetzen, weil alle Daten in einer Datei landen, wie bei Access. Alle 3 Datenbanken haben ODBC-Treiber, d.h. du kannst die Datenbanken auch in Access öffnen und bearbeiten.

    Was du aber auf jeden Fall können solltest, wäre SQL. Ich weis jetzt nicht, woran es bei dir scheitert. Vielleicht musst du auch einfach noch ein paar C++ Grundlagen lernen. Also bevor du was anderes versuchst. Vielleicht schreibst du erstmal, wo das Problem ist.



  • Ich stehe leider noch total im Wald 😞

    Ich hab mir unzählige Suchergebnisse bei Google angesehen, hab im Visual C++ Kompendium und in Visual C++ 2008 von Markt+Technik gelesen. Aber jeder Versuch, selbst Beispiele davon zu testen, ist gescheitert.

    Deswegen wäre ich ich sehr dankbar über ein in Visual C++ lauffähiges kleines Beispiel, wo einfach nur eine Access-Datenbank geöffnet und ein paar Zeilen einer Tabelle ausgegeben werden. So könnte ich wenigstens mal testen, ob ich zu dumm bin oder ob sonst etwas nicht stimmt.



  • Korhil schrieb:

    Deswegen wäre ich ich sehr dankbar über ein in Visual C++ lauffähiges kleines Beispiel, wo einfach nur eine Access-Datenbank geöffnet und ein paar Zeilen einer Tabelle ausgegeben werden. So könnte ich wenigstens mal testen, ob ich zu dumm bin oder ob sonst etwas nicht stimmt.

    Sowas habe ich nicht. Wenn du die Beispiele verstanden hast, solltest du kein Problem haben, wenn etwas nicht funktioniert, dann kannst du es selber korrigieren. Wenn du nur versuchst, irgendwoher was zu kopieren, dann kannst du gleich irgendwoher ein fertige Programm nehmen. Also: versuch erstmal die Sachen zu verstehen. Wenn du dazu fragen hast, stell sie. Und wenn du dann ein Programm hast, dass die eine bestimmte Fehlermeldung liefert, Postest du die entsprechende Stelle mit Fehlermeldung.



  • Ich hab hier zwar nur Visual Studio 6, aber da ist es mit den MFC Klassen total easy.

    CDatabase MyBase;
    if (MyBase.OpenEx("", CDatabase::forceOdbcDialog))
    {
        CRecordset MySet(&MyBase);
        MySet.Open(AFX_DB_USE_DEFAULT_TYPE, "select * from tabelle", CRecordset::executeDirect);
        while (!MySet.IsEOF())
        {
            CString szData;
            MySet.GetFieldValue("FELDNAME", szData);
            MySet.MoveNext();
        }
        MySet.Close();
        MyBase.Close();
    }
    


  • SQlite ist gut dokumentiert und hat Beispielcode un Schnittstellen die (fast)
    sofort funktionieren. Probier's mal. Ein absolut praxisgrechtes Tool.



  • Vielleicht kannst du dir ja auch hier ein bischen abgucken:
    http://www.c-plusplus.net/forum/viewtopic-var-t-is-164310.html


Anmelden zum Antworten