dbexpress und mysql commit, rollback ??



  • Hallo, wollte mehrere eintragungen in der Datenbank überprüfen.
    Habe folgenden code:

    SQLQuery1->SQL->Clear();
    SQLQuery1->SQL->Add("begin");
    SQLQuery1->ExecSQL();
    
    SQLQuery1->SQL->Clear();
    		 SQLQuery1->SQL->Add("insert into tab_user (user,user_info) values "
    		 "(:user,:user_info);");
    		 SQLQuery1->ParamByName("user")->AsInteger = letzteId;
    		 SQLQuery1->ParamByName("user_info")->AsString = Form1->Edit14->Text;
    
    		 try {
    			SQLQuery1->ExecSQL();
    		} catch (Exception &e) {
    			SQLQuery1->SQL->Clear();
    			SQLQuery1->SQL->Add("rollback");
    			SQLQuery1->ExecSQL();
    			Application->MessageBoxA(e.Message.c_str(),"Fehler",MB_OK|MB_ICONSTOP);
    		}
    ....
    ....
    try {
    			SQLQuery1->SQL->Clear();
    			SQLQuery1->SQL->Add("commit");
    			SQLQuery1->ExecSQL();
    			ShowMessage("Daten eingetragen");
    
    		} catch (Exception &e) {
    			Application->MessageBoxA("Datensatz nicht eintragen.","Fehler",MB_OK|MB_ICONSTOP);
    			SQLQuery1->SQL->Clear();
    			SQLQuery1->SQL->Add("rollback");
    			SQLQuery1->ExecSQL();
    		}
    

    Am Ende sollte entweder commit oder je nachdem rollback gesendet werden.
    Leider kllappt es nicht wenn irgendwoe ein fehler auftauscht oder ich als test am ende ein rollback erzeuge, werden Datensätze nicht entfernt.
    Ich dachte ich prüfe jeden eintrag und am Ende schreibe ich alles mit commit.

    Hoffe ihr könnt mir helfen.
    Danke.



  • Verwendet der Server als Storage engine myisam? Die unterstützt keine Transaktionen.



  • Bingo.
    Danke für die Info daran lag es.
    Habe es vollig vergessen.


Anmelden zum Antworten