Access über Odbc verbinden.



  • Hallo Leute ich möchte mit Odbc auf eine Access-Datenbank zugreifen.
    Habe auch ungefähr verstanden wie es geht. Habe auch schon nen bisschen Code geschrieben, aber leider bekomme ich keine Verbindung zur Datenbank.

    SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &hEnv);  
      SQLSetEnvAttr(hEnv, SQL_ATTR_ODBC_VERSION, (SQLPOINTER)SQL_OV_ODBC3, SQL_IS_INTEGER);
      SQLAllocHandle(SQL_HANDLE_DBC, hEnv, &hDBC);
      if (hDBC) 
      {	
    
        retCode = SQLConnect(hDBC, (SQLTCHAR *)"db1.mdb", SQL_NTS, 
                             (SQLTCHAR *)"",0,(SQLTCHAR *)"",0);
        if(retCode==SQL_SUCCESS||retCode==SQL_SUCCESS_WITH_INFO)
    	{
    	printf("Verbindung");
        SQLDisconnect(hDBC);
        SQLFreeHandle(SQL_HANDLE_DBC, hDBC);
    	}
    	else
    	{
    		printf("Fehler");
    	}
      }
    

    Ich weiss auch nicht mehr weiter. Vielleicht hat jemand noch ne Idee woran es liegen könnte.Danke!



  • Vielleicht probierst du statt printf("Fehler") mal den Fehlercode auszugeben...

    BTW: Mein Tip ist immer, du hast im ODBC Administrator vergessen die dazugehörige ODBC-Quelle anzulegen. Unter Windows: Systemsteuerung -> Verwaltung -> ODBC

    MfG SideWinder



  • Die Datenbank ist als System-DSN eingerichtet. Daran kann es leider auch nicht liegen. Wie kommen ich den an den Fehlercode ran?



  • Wenn ich morgen Abend wieder zu Hause bin kann ich ja mal meine kleine ODBC-Util-Library hierreinstellen. Nichts besonderes, aber es vereinfacht den Verbindungsaufbau, bietet Statements und ResultSets und kümmert sich brav ums Aufräumen.

    Dann habe ich Vergleichsmöglichkeiten, so tue ich mir jetzt auch schwer. SQLErrorCode() SQLErrCode() oder irgendwie so heißt die Methode.

    Edit: Müsste auhc irgendwas wie SQLErrMsg() geben.

    MfG SideWinder



  • Ich hab ja von ODBC und Access nicht viel Ahnung, aber sollte man nicht den DSN-Namen angeben, statt des Datenbanknamens? Respektive, woher weiß Dein Programm, wo die MDB liegt?



  • Die Datenbank ist als SystemDSN eingrichtet und der Aliasname ist db1.mdb!
    Eigentlich müsste man keine Pfad angeben.



  • versuchs mal mit SQLDriverConnect und dann als Connectionstring den von connectionstrings.com :

    Driver={Microsoft Access Driver (*.mdb)};Dbq=C:\mydatabase.mdb;Uid=Admin;Pwd=;
    


  • Tja irgendwie hat nichts geholfen. Ich habe keine weitere Idee? Vielleicht jemand von euch?



  • Hallo,

    es kann zwar sein, daß die zur Datenbank gehörende Datei auf der Platte "db1.mdb" heißt. Aber ich bezweifle, daß Du der Datenbank in der Systemsteuerung auch diesen Namen gegeben hast. Und ins Kommando gehört der Datenbankname - und nicht der Dateiname! 😃

    Jörg


Anmelden zum Antworten