Environment對象,是ODBC的頂層對象,包含了全局的環境參數。
數據庫
是建立其餘數據庫對象的先決條件,在使用ODBC訪問數據庫前,必須首先建立一個Environment對象。函數
SQLSMALLINT hEnv = 0; // Environment對象句柄 SQLRETURN ret = SQLAllocHandle(SQL_HANDLE_ENV, NULL, &hEnv); // 建立一個Environment句柄 ret = SQLFreeHandle(SQL_HANDLE_ENV, hEnv);
Environment使用下列函數獲取和設置屬性:
spa
SQLRETURN SQLGetEnvAttr( SQLENV hEnv, SQLINTEGER attrib, SQLPOINT valueptr, SQLINTEGER buflen, SQLINTEGER *pStrLen); SQLRETURN SQLSetEnvAttr( SQLENV hEnv, SQLINTEGER attrib, SQLPOINT valueptr, SQLINTEGER stringlen);
ODBC-3.8,表示是否在Env層啓用鏈接池,32位無符號整數,取值以下:
code
SQL_CP_OFF 不啓用鏈接池,默認值。
對象
SQL_CP_ONE_PER_DRIVER 對於每一個ODBC驅動啓用一個鏈接池
接口
SQL_CP_ONE_PER_HENV 對於每一個Env對象啓用一個鏈接池字符串
SQL_CP_DRIVER_AWARE 若是驅動不支持驅動級鏈接池,則轉爲啓用ENV級鏈接池。
string
ODBC-3.0,表示SQLConnect和SQLDriverConnect函數執行時,鏈接獲取方式,
class
32位無符號整數,取值以下:數據
SQL_CP_STRICT_MATCH 從鏈接池中獲取全部屬性參數都匹配的鏈接,默認值。
SQL_CP_RELAXED_MATCH 獲取鏈接字符串中的關鍵字匹配的鏈接,無需全部參數都匹配。
ODBC-3.0,32位整數,表示當前ODBC接口的行爲對應的ODBC版本,
在執行任何須要SQLHENV的ODBC函數前,必須先設置該屬性,否者將遇到HY010錯誤。
取值以下:
SQL_OV_ODBC3_80 ODBC 3.8兼容
SQL_OV_ODBC3 ODBC 3.0兼容
SQL_OV_ODBC2 ODBC 2.0兼容
ODBC 3.0,32位整數,表示驅動返回字符串的方式,取值以下:
SQL_TRUE 驅動返回字符串以NULL字符結尾,默認方式。
SQL_FALSE 驅動返回字符串不以NULL字符結尾。
該選項值默認不被實現,所以調用SQLSetEnvAttr設置時可能返回錯誤(HYC00)。