我需要打开与系统数据库的连接,然后在内部打开租户数据库的连接。 目前我已经为每个连接实现了不同的环境句柄。
连接到系统数据库,
retCode = SQLAllocConnect(sqlEnvHandle , &sqlConnectionHandle);
retCode=SQLDriverConnect (sqlConnectionHandle,
NULL,
(SQLCHAR*)ConnString,
SQL_NTS,
retConnString,
BUFFER_SIZE,
NULL,
SQL_DRIVER_NOPROMPT);
连接到租户数据库,其中“i”迭代到租户数据库的数量并打开每个租户数据库的连接,
retCode = SQLAllocConnect(TenantDBConnectionObj[i].sqlTenantEnvHandle, &TenantDBConnectionObj[i].sqlTenantConnectionHandle);
retCode=SQLDriverConnect(TenantDBConnectionObj[i].sqlTenantConnectionHandle,
NULL,
ConnString,
SQL_NTS,
retConnString,
BUFFER_SIZE,
NULL,
SQL_DRIVER_NOPROMPT);
仅使用一个环境句柄sqlEnvHandle
来打开所有这些连接是有效的编程吗?
连接池怎么样?这样的场景我们可以实现吗?
最佳答案
通常人们只使用一种环境并在此基础上建立许多联系。我不知道使用多个环境有什么优势(除非您需要针对不同的连接使用不同的环境设置 - 例如,您希望不同的连接池设置生效,在环境级别使用 SQL_ATTR_CONNECTION_POOLING 属性进行设置)。
此外,某些 ODBC 驱动程序不支持多种环境(有关 DB2 ODBC 3.0 驱动程序的效果的声明,请参阅 https://www-01.ibm.com/support/knowledgecenter/SSEPEK_11.0.0/com.ibm.db2z11.doc.odbc/src/tpc/db2z_fnallochandle.dita)。
关于c - 我应该为多个连接使用单独的 ODBC 环境吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33214178/