ODBC :: Programm sagt nichts nach verbindungsfehler ??



  • ich verbinde mich mit der datenbank. jetzt gibts das problem wenn ich die zugangsdaten falsch sind erscheint eine fehlermeldung "konnte nicht verbinden ...". ist ok, aber die open()-funktion scheint ins leere zu laufen. denn mein programm macht dann nicht witer. die auslastung vom rechner ist bei 0% !?!?



  • probiers mal so:

    CDBAnlage* pDBAnlage = NULL;   // CDBAnlage von CRecordset abgeleitetp
    DBAnlage = new CDBAnlage();
    try
    {
      pDBAnlage->Open();
    
      while (!pDBAnlage->IsEOF())
    
      {	
    	//deine actions	          
    
      }
    }
    catch (CDBException* pe)
    {
      AfxMessageBox(pe->m_strError);
    }
    

    halt mit crecordset. du schreibst ja nicht, mit was du auf die DB zugreifst.

    Esco



  • oh, ich mache das mit CDatabase 😉 ich öffne die verbindung zu ODBC mit

    CDatabase dData;
    dData.Open(strDSN);
    

    hättest du da auch ne lösungsidee parat ??



  • jo klar. wie oben. die idee dahinter ist der try und catch block 🙂

    Esco



  • ne sorry, das meine ich nicht. ich erkläre mal ganz genau:

    ich will per ODBC auf meinen MySQL server über den treiber "MySQL ODBC 3.51 Driver" zugreifen. wenn ich die odbc datenquelle richtig eingestellt habe dann verbindet sich das programm über odbc zur datenbank.
    stelle ich aber etwas falsches ein kommt die fehlermeldung das keine verbindung hergestellt werden kann. die fehlermeldung ist aber kein syntax-fehler o.ä.. auf jeden fall kommt dann der standart-dialog zur eingabe der daten.

    ich möchte aber:
    wenn er sich verbinden kann gibt die funktion TRUE zurück, wenn er sich nicht verbinden kann sagt er FALSE (ohne fehler ohne alles). gibt es das ??



  • Red Skall schrieb:

    ne sorry, das meine ich nicht. ich erkläre mal ganz genau:

    ich will per ODBC auf meinen MySQL server über den treiber "MySQL ODBC 3.51 Driver" zugreifen. wenn ich die odbc datenquelle richtig eingestellt habe dann verbindet sich das programm über odbc zur datenbank.
    stelle ich aber etwas falsches ein kommt die fehlermeldung das keine verbindung hergestellt werden kann. die fehlermeldung ist aber kein syntax-fehler o.ä.. auf jeden fall kommt dann der stan****-dialog zur eingabe der daten.

    ich möchte aber:
    wenn er sich verbinden kann gibt die funktion TRUE zurück, wenn er sich nicht verbinden kann sagt er FALSE (ohne fehler ohne alles). gibt es das ??

    hae?
    wir zwei verstehen uns nicht ganz.

    AfxMessageBox(pe->m_strError); gibt dir den grund an, warum er nicht connecten konnte.

    oder was ist sonst das prob?
    wenn er sich verbinden kann -> true (so solls sein)
    wenn er nicht kann: -> false (so solls sein)
    wenn er den odbc/die DB nicht findet -> dialog (so solls sein)

    Esco



  • wenn er sich nicht verbinden kann gibt er nicht FALSE zurück, dann kommt auch das dialogfeld. ich will das das niemals erscheint. er soll nur TRUE oder FALSE zurück geben.

    das mit catch hab ich auch getestet ohne erfolg. der fängt keine fehler ab sondern lässt die funktion einfach weiter laufen



  • Red Skall schrieb:

    wenn er sich nicht verbinden kann gibt er nicht FALSE zurück, dann kommt auch das dialogfeld. ich will das das niemals erscheint. er soll nur TRUE oder FALSE zurück geben.

    das mit catch hab ich auch getestet ohne erfolg. der fängt keine fehler ab sondern lässt die funktion einfach weiter laufen

    das weicht jetzt aber schon sehr von deinem eingangsproblem ab 😃

    so, da ich das auch nicht weiss, hab ich mal in die MSDN reingeschaut:
    -> CDatabase::OpenEx ist dein freund.

    Esco



  • oh mein gott, es geht !! das tollste ist ja das ich mitr die funktion schon mal angeguckt habe ^^

    Danke !!


Anmelden zum Antworten