Access-Datenbank mit C/C++



  • Guten Morgen, ich bin auf der Suche nach einer Möglichkeit mit C bzw. C++ auf Daten einer Access Datenbank (.mdb) zuzugreifen. Kennt jemand von euch eine Bibliothek für mein Vorhaben. Meine gestrige Suche im Netz hat leider nicht wirklich was gebracht. Bin für jede noch so kleine Hilfe dankbar.

    PS: Bitte keine Vorschläge zur Verwendung von .Net Bibliotheken.



  • viele...

    einfach anzubinden geht es mit der mfc, micosoft foundation classes.. bzw. mit der entwicklungsumgebung visual studio.
    ps: du hattes grad noch geändert, daß du keine net willst, dann wohl auch kein mfc 😉

    du kannst es auch per hand machen

    auschnitt:

    // odbc32.lib mitlinken
    #include <windows.h>
    #include <stdlib.h>
    #include <stdio.h>
    #include <sql.h>
    #include <sqlext.h>
    
    #define ID_LEN 35
    
    int main(void)
    {
    
    	SQLHANDLE henv;
    	SQLHANDLE hdbc;
    	SQLHANDLE hstmt;
    	RETCODE rc;
    
        SQLCHAR   m_Id[ID_LEN]; 
        SQLCHAR   name[ID_LEN]; 
    	char Statement[50] = {"select * from adressen"};		
    	char dsn[10] = {"test"};
    	char user[5] = {""};
    	char pass[5] = {""};
    
    	long m_bytesRet = SQL_NTS;
    
    	rc = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &henv);
    
    	rc = SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION, 
    			(SQLPOINTER) SQL_OV_ODBC3, SQL_IS_UINTEGER);
    
    	rc = SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc);
    
    	rc = SQLConnect(hdbc, (SQLCHAR *)dsn, SQL_NTS, (SQLCHAR *) user, SQL_NTS, 
    			(SQLCHAR *) pass, SQL_NTS);
    
    	rc = SQLAllocHandle(SQL_HANDLE_STMT,hdbc,&hstmt);
    
    	rc = SQLPrepare(hstmt, (SQLCHAR *)Statement, SQL_NTS);
    
    	rc = SQLExecute(hstmt);
    
    	rc = SQLFetch(hstmt);
    
    	if (rc == SQL_NO_DATA_FOUND)
    	{
    		printf("keine daten gefunden");
    		SQLFreeStmt(hstmt, SQL_DROP);
    		SQLDisconnect(hdbc);
    		SQLFreeHandle(SQL_HANDLE_DBC, hdbc);
    		SQLFreeHandle(SQL_HANDLE_ENV, henv);
    		exit(0);
    	}
    	else
    	{
            printf ("daten gefunden");
    	    SQLGetData(hstmt, 1, SQL_C_CHAR, m_Id, 10, &m_bytesRet);
            printf ("%s", m_Id);
            SQLGetData(hstmt, 1, SQL_C_CHAR, name,10, &m_bytesRet);
            printf ("%s", name);
    
        }
    	rc = SQLFreeStmt(hstmt, SQL_CLOSE);
    	rc = SQLDisconnect(hdbc);
    	SQLFreeHandle(SQL_HANDLE_DBC, hdbc);
    	SQLFreeHandle(SQL_HANDLE_ENV, henv);
    }
    


  • Danke elise für die schnelle Antwort.
    Genau...auf MFC möchte ich auch verzichten.
    Habe mir deinen Code mal angeschaut und habe dazu nun eine Frage:
    Braucht man dazu eine ODBC Datenquelle? Wenn ja kennst du eine
    Möglichkeit dies ohne ODBC Datenquelle zu realisieren?
    Werde das ganze aber trotzdem heute Abend gleich mal ausprobieren.
    Danke nochmal.


Anmelden zum Antworten