In diesem Abschnitt wird beschrieben, wie eine SQL-Anweisung aufgebaut und ausgeführt wird, bei der zum Festlegen der Werte von Anweisungsparametern gebundene Parameter eingesetzt werden.
Weisen Sie der Anweisung mit SQLAllocHandle ein Handle zu.
Mit der folgenden Anweisung wird z.B. auf einer Verbindung mit dem Handle SQL_HANDLE_STMT
ein Handle vom Typ stmt
mit dem Namen dbc
zugewiesen:
SQLAllocHandle( SQL_HANDLE_STMT, dbc, &stmt ); |
Binden Sie Parameter für die Anweisung mit SQLBindParameter.
Zum Beispiel werden mit den folgenden Zeilen Variable deklariert, die Werte für Abteilungs-ID, Abteilungsname und Manager-ID sowie die Anweisungszeichenfolge enthalten sollen. Anschließend werden Parameter an den ersten, zweiten und dritten Parameter einer Anweisung gebunden, die mit dem Anweisungs-Handle stmt ausgeführt wird.
#defined DEPT_NAME_LEN 40 SQLLEN cbDeptID = 0, cbDeptName = SQL_NTS, cbManagerID = 0; SQLCHAR deptName[ DEPT_NAME_LEN + 1 ]; SQLSMALLINT deptID, managerID; SQLCHAR insertstmt[ STMT_LEN ] = "INSERT INTO Departments " "( DepartmentID, DepartmentName, DepartmentHeadID )" "VALUES (?, ?, ?)"; SQLBindParameter( stmt, 1, SQL_PARAM_INPUT, SQL_C_SSHORT, SQL_INTEGER, 0, 0, &deptID, 0, &cbDeptID); SQLBindParameter( stmt, 2, SQL_PARAM_INPUT, SQL_C_CHAR, SQL_CHAR, DEPT_NAME_LEN, 0, deptName, 0,&cbDeptName); SQLBindParameter( stmt, 3, SQL_PARAM_INPUT, SQL_C_SSHORT, SQL_INTEGER, 0, 0, &managerID, 0, &cbManagerID); |
Den Parametern Werte zuweisen.
Mit den folgenden Zeilen werden z.B. den Parametern im Fragment von Schritt 2 Werte zugewiesen.
deptID = 201; strcpy( (char * ) deptName, "Sales East" ); managerID = 902; |
Im Allgemeinen werden diese Variablen als Reaktion auf eine Benutzerhandlung festgelegt.
Führen Sie die Anweisung mit SQLExecDirect aus.
Mit der folgenden Zeile wird z.B. eine Anweisungszeichenfolge ausgeführt, die sich in insertstmt
im Anweisungs-Handle stmt
befindet.
SQLExecDirect( stmt, insertstmt, SQL_NTS) ; |
Gebundene Parameter werden auch mit vorbereiteten Anweisungen verwendet, um die Performance von Anweisungen zu steigern, die mehr als einmal ausgeführt werden sollen. Weitere Hinweise finden Sie unter Vorbereitete Anweisungen ausführen.
Die obigen Codefragmente enthalten keine Fehlerprüfung. Ein vollständiges Beispiel mit Fehlerprüfung finden Sie unter Beispielverzeichnis\SQLAnywhere\ODBCExecute\odbcexecute.cpp.
Weitere Hinweise zu SQLExecDirect finden Sie unter "SQLExecDirect" in der Microsoft-Dokumentation ODBC API Reference unter http://msdn.microsoft.com/en-us/library/ms713611.aspx.
![]() |
Kommentieren Sie diese Seite in DocCommentXchange.
|
Copyright © 2010, iAnywhere Solutions, Inc. - SQL Anywhere 12.0.0 |