c - 我应该为多个连接使用单独的 ODBC 环境吗?

标签 c visual-studio-2010 odbc unixodbc

我需要打开与系统数据库的连接,然后在内部打开租户数据库的连接。 目前我已经为每个连接实现了不同的环境句柄。

连接到系统数据库,

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/

相关文章:

c++ - 如何将常量放入代码内存

c - 汇编程序中的循环迭代不正确

c# - Visual Studio 从一般开发设置更改

visual-studio-2010 - visual studio 将动态链接更改为 win32 应用程序的静态链接

R 和 RStudio 未检测到已安装的 PostgreSQL(或任何其他)ODBC 驱动程序

c++ - ODBC、SQL_SUCCESS_WITH_INFO、游标类型已更改 - 发生在具有单个 SELECT 的存储过程上

c++ - 如何跟踪扩大的圆半径

c - C 中的 (round)(myFloat) 是什么语法?

sql-server-2008 - Microsoft Access ODBC 连接字符串限制为 255 个字符?

c# - DropDownList 导致错误 : Object reference not set to an instance of an object