2015-10-19 100 views
0

我需要打開到系統DB的連接,然後在內部打開租戶數據庫的連接。 目前我已經爲每個連接實現了不同的環境句柄。我應該爲多個連接使用單獨的ODBC環境嗎?

連接到系統數據庫,

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? 連接池怎麼樣?我們可以在這種情況下實施嗎?

回答

1

通常情況下,人們只使用一個環境並創建多個連接。我不知道使用多個環境有什麼優勢(除非您需要爲不同的連接設置不同的環境設置 - 例如,您希望不同的連接池設置生效,並在環境級別使用SQL_ATTR_CONNECTION_POOLING屬性進行設置)。

此外,某些ODBC驅動程序不支持多個環境(請參閱https://www-01.ibm.com/support/knowledgecenter/SSEPEK_11.0.0/com.ibm.db2z11.doc.odbc/src/tpc/db2z_fnallochandle.dita瞭解DB2 ODBC 3.0驅動程序的這種情況)。

相關問題