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.
Deklarieren Sie ein ULPreparedStatement mit dem folgenden Code:
ULPreparedStatement * prepStmt; |
Bereiten Sie eine SQL-Anweisung für die Ausführung vor.
Der folgende Code bereitet eine UPDATE-Anweisung für die Ausführung vor:
prepStmt = conn->PrepareStatement("UPDATE MyTable SET MyColumn = ? WHERE MyColumn = ?"); |
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; } |
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 auf Ganzzahlwerte 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.
bool success; success = prepStmt->SetParameterInt( 1, 25 ); if( success ) { success = prepStmt->SetParameterInt( 2, -1 ); } if( !success ) { const ULError * ulerr; ulerr = conn->GetLastError(); // write code to handle the error return; } |
Führen Sie die vorbereitete Anweisung aus und aktualisieren Sie die Daten in der Datenbank.
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.
success = prepStmt->ExecuteStatement(); if( !success ) { const ULError * ulerr; ulerr = conn->GetLastError(); // write code to handle the error } else { // if you are interested in the number of rows updated ... ul_u_long rowsUpdated = prepStmt->GetRowsAffectedCount(); } |
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(); |
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(); |
![]() |
Kommentieren Sie diese Seite in DocCommentXchange.
|
Copyright © 2013, SAP AG oder ein SAP-Konzernunternehmen. - SAP Sybase SQL Anywhere 16.0 |