在应用程序可以连接到数据源或驱动程序之前,它必须分配连接句柄,如下所示:
应用程序声明 SQLHDBC 类型的变量。 然后,它调用 SQLAllocHandle 并传递此变量的地址、要在其中分配连接的环境的句柄以及SQL_HANDLE_DBC选项。 例如:
SQLHDBC hdbc1; SQLAllocHandle(SQL_HANDLE_DBC, henv1, &hdbc1);驱动程序管理器分配一个结构,用于存储有关语句的信息,并在变量中返回连接句柄。
驱动程序管理器目前不会在驱动程序中调用 SQLAllocHandle ,因为它不知道要调用哪个驱动程序。 它会延迟在驱动程序中调用 SQLAllocHandle ,直到应用程序调用函数以连接到数据源。 有关详细信息,请参阅本节后面的 连接过程中驱动程序管理器的角色。
请务必注意,分配连接句柄与加载驱动程序不同。 在调用连接函数之前,不会加载驱动程序。 因此,在分配连接句柄之后,在连接到驱动程序或数据源之前,应用程序可以使用连接句柄调用的唯一功能是 SQLSetConnectAttr、 SQLGetConnectAttr 或 SQLGetInfo 以及具有SQL_ODBC_VER选项。 使用连接句柄(如 SQLEndTran)调用其他函数将返回 SQLSTATE 08003(连接未打开)。 有关完整详细信息,请参阅 附录 B:ODBC 状态转换表。
有关连接句柄的详细信息,请参阅 连接句柄。