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

SQL Anywhere 11.0.1 (Deutsch) » SQL Anywhere Server - Programmierung » SQL Anywhere Datenzugriff-APIs » SQL Anywhere ODBC-API » SQL-Anweisungen ausführen

 

Anweisungen mit gebundenen Parametern ausführen

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.

♦  So wird eine SQL-Anweisung mit gebundenen Parametern in einer ODBC-Anwendung ausgeführt
  1. 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 );
  2. 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);
  3. 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.

  4. 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 [external link] SQLExecDirect in der Microsoft-Dokumentation ODBC Programmer's Reference.