Exception Behandlung



  • es geht mir vor allem um fehlermeldungen eines sql servers. sql server gibt eine fehlernummer zurück , wenn z.b die sql anweisung fehlerhaft ist oder gegen eine einschrenkung verstösst.

    das Exception objekt liefert leider nur den fehlertext. hat jemand ein tip wie man an den errorcode kommt?



  • Morgen!

    try
    {
       irgendwas("Hallo", Test);
    }
    catch ( EmySQLDatabaseError &E) // statt EmySQLDatabaseError den Namen Deiner entsprechenden Exception eintragen
    {
          ShowMessage("E.Message + " " + IntToStr(E.ErrorCode));
    }
    


  • Hi,

    für sowas nimmt man entsprechende Tools. Ich hab da mehrere Favoriten.

    Unter anderen einen von der Firma Benthic Software Direktdownload



  • wenn ich eine sql anweisung von meinem prog anstoße, die z.b. gegen die primary key einschrenkung verstoßt, will ich die entsprechende fehler nummer bekommen, beim versuch in eine spalte <NULL> reinzuschreiben, die <NULL> nicht zulässt generiert sql server eine andere. und exception ist immer nur exception, es gibt keine 'EPrimaryKeyException' oder 'ENULLNotAllovedException'



  • wie greifst du auf die sql datenbank zu, BDE, ADO dbExpress etc...
    exception ist der allgemeine typ er steht für alle unbehandelten exceptions in der anwendung du must herausfinden von welchem typ die exception ist EDatabaseError, EDBEngineError etc... dann hast du auch die möglichkeit den fehlercode auszulesen.

    so sieht das bei mir aus (E ist vom typ Exception):

    if(E->ClassNameIs("EDBEngineError"))
        {
            EDBEngineError *Fehler = (EDBEngineError *)E;
    
            ErrCode = Fehler->Errors[Fehler->ErrorCount -1]->ErrorCode;
    

    [ Dieser Beitrag wurde am 13.01.2003 um 10:53 Uhr von Matt editiert. ]



  • Aber es gibt doch die "allgemeine" EDatabase-Exception.
    Über diese kannst du doch dann den Error-Code ausfindig machen!

    [Edit]
    Hmm, da war mal wieder einer schneller...
    [\Edit]

    [ Dieser Beitrag wurde am 13.01.2003 um 10:56 Uhr von JeGr editiert. ]



  • ich nutze ADO und da ist EDBEngineError nicht von nutzen

    es gibt zwar EOLEException mit der eigenschaft ErrorCode, aber ErrorCode ist da eine nix sagende Zahl, die immer gleich ist und hat nix mit dem fehlercode von dem sql server zu tun.



  • Ich benutze ADO in Verbindung mit Oracle.
    Dort liefert mir die EOleExecption in seiner Meldung die Oracle-Fehlernummer
    (ORA-XXXX: "Beschreibung des Fehlers")
    Allerdings steht dies direkt in der Meldung und nicht in der Fehlernummer.



  • 😞 bei SQL Server steht da ledeglich nur die Beschreibung



  • und wie heist diese nichtssagende zahl??

    versuch mal mit den dbexpress komponenten auf die db zukommen.



  • das ist eine MS SQL Server Datenbank

    es gibt von borland kein dbexpress treiber für ms sql, und die treiber der dritanbieter basieren auch auf ado.

    die zahl sieht ungefähr so aus: -228645287


Anmelden zum Antworten