语句句柄
语句句柄可被视为一种SQL语句,例如SELECT FROM Employee。 但语句句柄不只是SQL语句,还包含与该SQL语句相关联的所有信息,如语句所创建的所有结果集和执行语句时使用的参数。
每个语句都有独立的语句句柄标识,语句与单个连接相关联,但该连接上可有多个附属语句。 某些驱动程序会限制其支持的活动语句的数量,SQLGetInfo中的SQL_MAX_CONCURRENT_ACTIVITIES选项指定驱动程序在单个连接上支持的活动语句数。如语句具有挂起的结果,则将其定义为活动状态,其中的结果是结果集或受INSERT、UPDATE或DELETE语句影响的行数,或正在通过多次调用SQLPutData发送数据。
在实现ODBC(驱动程序管理器或驱动程序)的代码段内,语句句柄标识包含语句信息的结构,如:
- 语句的状态
- 当前语句级别诊断
- 绑定到语句的参数和结果集列的应用程序变量的地址
- 每个语句特性的当前设置
语句句柄用于大多数ODBC函数,在函数中主要用于以下情形:
- 绑定参数和结果集列(SQLBindParameter和SQLBindCol)
- prepare和execute语句执行(SQLPrepare、 SQLExecute和SQLExecDirect)
- 检索元数据(SQLColAttribute和SQLDescribeCol)
- 提取结果(SQLFetch)
- 检索诊断(SQLGetDiagField和SQLGetDiagRec)
- 目录函数(SQLColumns、 SQLTables等)
语句句柄通过SQLAllocHandle分配,通过SQLFreeHandle释放。