本节介绍如何使用绑定参数为语句参数设置运行时的值,来构造和执行 SQL 语句。
使用 SQLAllocHandle 为该语句分配一个句柄。
例如,以下语句在具有句柄 dbc
的连接上分配了一个类型为 SQL_HANDLE_STMT
、名称为 stmt
的句柄:
SQLAllocHandle( SQL_HANDLE_STMT, dbc, &stmt ); |
使用 SQLBindParameter 为语句捆绑参数。
例如,以下几行代码声明一些变量,这些变量用于存储部门 ID、部门名称和管理人员 ID 以及语句字符串的值。然后,这些代码将参数绑定到使用 stmt 语句句柄执行的语句的第一个、第二个和第三个参数上。
#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); |
为参数赋值。
例如,下面几行代码为第 2 步代码段的参数赋值。
deptID = 201; strcpy( (char * ) deptName, "Sales East" ); managerID = 902; |
通常,设置这些变量是为了响应用户操作。
使用 SQLExecDirect 执行语句。
例如,以下几行代码执行语句句柄 stmt
上的 insertstmt
中具有的语句字符串。
SQLExecDirect( stmt, insertstmt, SQL_NTS) ; |
此外,还可以为准备语句使用绑定参数,从而为需要执行多次的语句带来更好的性能。有关详细信息,请参见执行预准备语句。
上述代码段不包括错误检查。有关包括错误检查的完整示例,请参见 samples-dir\SQLAnywhere\ODBCExecute\odbcexecute.cpp。
有关 SQLExecDirect 的详细信息,请参见 Microsoft ODBC 程序员参考中的 SQLExecDirect。
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |