预准备语句可提高重复使用的语句的性能。ODBC 为使用预准备语句提供了一整套函数。
有关预准备语句的简介,请参见准备语句。
使用 SQLPrepare 准备语句。
例如,下面的代码段说明如何准备 INSERT 语句:
SQLRETURN retcode; SQLHSTMT stmt; retcode = SQLPrepare( stmt, "INSERT INTO Departments ( DepartmentID, DepartmentName, DepartmentHeadID ) VALUES (?, ?, ?,)", SQL_NTS); |
在此示例中:
retcode 包含返回代码,应测试这些代码来检查操作是成功还是失败。
stmt 提供语句句柄,供以后引用。
? 问号是表示语句参数的占位符。
使用 SQLBindParameter 设置语句参数值。
例如,以下函数调用设置 DepartmentID 变量的值:
SQLBindParameter( stmt, 1, SQL_PARAM_INPUT, SQL_C_SSHORT, SQL_INTEGER, 0, 0, &sDeptID, 0, &cbDeptID); |
在此示例中:
stmt 是语句句柄。
1 指示此调用设置第一个占位符的值。
SQL_PARAM_INPUT 指示该参数是输入语句。
SQL_C_SHORT 指示该应用程序中正在使用的 C 数据类型。
SQL_INTEGER 指示数据库中正在使用的 SQL 数据类型。
接下来的两个参数指示列的精度和小数位数:对于整数,这两个参数均为零。
&sDeptID 是指向参数值缓冲区的指针。
0 指示缓冲区的长度,以字节计。
&cbDeptID 是指向参数值长度缓冲区的指针。
捆绑其它两个参数并给 sDeptId 赋值。
执行该语句:
retcode = SQLExecute( stmt); |
第 2 至 4 步可重复执行多次。
删除语句。
删除语句将释放与语句本身相关联的资源。使用 SQLFreeHandle 可以删除语句。
有关包括错误检查的完整示例,请参见 samples-dir\SQLAnywhere\ODBCPrepare\odbcprepare.cpp。
有关 SQLPrepare 的详细信息,请参见 Microsoft ODBC 程序员参考中的 SQLPrepare。
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |