Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SAP Sybase SQL Anywhere 16.0 (Deutsch) » UltraLite - C- und C++-Programmierung » Anwendungsentwicklung » UltraLite C++-Anwendungsentwicklung » Datenerstellung und -änderung mit SQL-Anweisungen » Datenmodifikation mit INSERT, UPDATE und DELETE

 

Einer Zeile in einer Tabelle löschen

UltraLite kennzeichnet Abfrageparameter mit dem ?-Zeichen. Für eine INSERT, UPDATE oder DELETE-Anweisung wird jedes ? entsprechend seiner Stellung in der vorbereiteten Anweisung referenziert. Das erste ? wird z.B. als Parameter 1 referenziert, das zweite als Parameter 2.

Voraussetzungen

Es gibt keine Voraussetzungen für diese Aufgabe.

 Aufgabe
  1. Deklarieren Sie ein ULPreparedStatement mit dem folgenden Code:

    ULPreparedStatement * prepStmt;
  2. Bereiten Sie eine SQL-Anweisung für die Ausführung vor.

    Der folgende Code bereitet eine DELETE-Anweisung für die Ausführung vor:

    prepStmt = conn->PrepareStatement("DELETE FROM MyTable(MyColumn1) VALUES (?)");
  3. Prüfen Sie bei der Vorbereitung der Anweisung, ob Fehler auftreten.

    Beispiel: Der folgende Code ist nützlich, wenn Sie eine Prüfung auf SQL-Syntaxfehler vornehmen:

    if( prepStmt == NULL ) {
        const ULError * ulerr;
        ulerr = conn->GetLastError();
        // write code to handle the error
        return;
    }
  4. Legen Sie Werte zum Ersetzen der ?- Zeichen in der vorbereiteten Anweisung fest.

    Der folgende Code legt das ?- Zeichen während der Überprüfung auf Fehler mit 7 fest. Beispiel: Ein Fehler wird abgefangen, wenn die Parameterordinalzahl außerhalb des zulässigen Bereichs für die Anzahl der Parameter in der vorbereiteten Anweisung liegt.

    ul_s_long value_to_delete = 7;
    if( !prepStmt->SetParameterInt(1, value_to_delete) ) {
        const ULError * ulerr;
        ulerr = conn->GetLastError();
        // write code to handle the error.
        return;
    }
  5. Führen Sie die vorbereitete Anweisung aus und löschen Sie die Daten aus der Datenbank.

    Der nachstehende Code prüft, ob Fehler vorhanden sind, die nach dem Ausführen der Anweisung auftreten könnten. Zum Beispiel wird ein Fehler zurückgegeben, wenn Sie versuchen, eine Zeile zu löschen, auf die ein Fremdschlüssel verweist.



    bool success;
    success = prepStmt->ExecuteStatement();
    if( !success ) {
        const ULError * ulerr;
        ulerr = conn->GetLastError();
        // write code to handle the error
    } else {
        // Use the following line if you are interested in the number of rows deleted ...
        ul_u_long rowsDeleted = prepStmt->GetRowsAffectedCount();
    }
  6. Bereinigen Sie die Ressourcen der vorbereiteten Anweisung.

    Der folgende Code gibt die Ressourcen frei, die vom Objekt der vorbereiteten Anweisung verwendet werden. Auf dieses Objekt darf nicht mehr zugegriffen werden, nachdem die Close-Methode aufgerufen wird.

    prepStmt->Close();
  7. Schreiben Sie die Daten in der Datenbank fest.

    Der folgende Code speichert die Daten in der Datenbank und verhindert Datenverlust. Die Daten aus Schritt 5 gehen verloren, wenn die Geräteanwendung unerwartet abbricht, bevor die Anwendung einen Commit-Aufruf abschließen kann.

    conn->Commit();

Ergebnisse

Zeileneinträge werden aus MyTable gelöscht, wenn der MyColumn-Wert in der Tabelle gleich 7 ist.