我需要打开与系统DB的连接,然后在内部打开租户数据库的连接。 目前我已经为每个连接实现了不同的环境句柄。
连接到系统DB,
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
打开所有这些连接是否有效?
连接池怎么样?我们可以在这种情况下实施吗?
答案 0 :(得分:1)
通常人们只使用一个环境并创建许多连接。我不知道使用多个环境有什么好处(除非您需要针对不同连接的不同环境设置 - 例如,您希望不同的连接池设置生效,在环境级别使用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。)