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

 

Eine Zeile in eine Tabelle einfügen

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 INSERT-Anweisung für die Ausführung vor:

    prepStmt = conn->PrepareStatement("INSERT INTO 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 "some value" 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.

    if( !prepStmt->SetParameterString(1, "some value") ) {
        const ULError * ulerr;
        ulerr = conn->GetLastError();
        // write code to handle the error
        return;
    }
  5. Führen Sie die vorbereitete Anweisung aus und fügen Sie Daten in die Datenbank ein.

    Der nachstehende Code prüft, ob Fehler vorhanden sind, die nach dem Ausführen der Anweisung auftreten könnten. Beispiel: Ein Fehler wird zurückgegeben, wenn ein doppelter Indexwert in einem eindeutigen Index gefunden wird.



    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 inserted ...
        ul_u_long rowsInserted = 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

Eine neue Zeile wird zu MyTable hinzugefügt, wobei der MyColumn1-Wert auf eine Zeichenfolge "some value" gesetzt wird.