描述符的初始化¶
应用级描述符一旦被分配,就会被ODBC驱动自动初始化。 ODBC标准规定了所有的默认值,使用此时APD和ARD的设置符合没有任何绑定参数和任何绑定列以及行大小为1的状态。 之后,应用程序可以调用SQLBindParameter和SQLBindCol。
同样的概念不适合实现级描述符。 IRD在分配之后,它的值是没有意义的;只有当它所属的语句句柄经过预执行或执行后,应用程序才可以用SQLGetField访问IRD的属性。
IPD的情况更复杂一些。 IPD在分配之后不会被自动初始化;之后,它可以在查询执行的两个阶段被填充:在预执行后和在查询完成后。 通过SQLStmtAttr的SQL_ATTR_AUTO_IPD选项,应用程序可以设置IPD的自动填充特性,决定ODBC驱动在预执行后立即填充IPD或者延迟至执行完成后再进行填充。
只有当IPD填充后,应用程序才可以访问它的属性以及使用SQLDescribeParameter等获取参数信息的API函数。 另一方面,如果要在预执行之后立即填充IPD,此时所有的参数信息并未就绪,因此ODBC驱动需要和服务器作额外的交互从而影响性能。 在实际使用中,应用程序可以根据自己的需要决定是采用IPD的何种填充方式。