
# 连接数据库涉及的API
在测试连接数据库成功后，ODBC API提供了一组函数来连接数据库，如[表1]所示。
 表1相关API说明 
| **功能** | **API**                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
|:---|:---|
| 申请句柄资源 | [SQLAllocHandle](https://support.huaweicloud.com/centralized-devg-v8-gaussdb/gaussdb-42-0116.html#ZH-CN_TOPIC_0000002558947839)：申请句柄资源，可替代如下函数： - [SQLAllocEnv](https://support.huaweicloud.com/centralized-devg-v8-gaussdb/gaussdb-42-0114.html#ZH-CN_TOPIC_0000002559107745)：申请环境句柄。  - [SQLAllocConnect](https://support.huaweicloud.com/centralized-devg-v8-gaussdb/gaussdb-42-0115.html#ZH-CN_TOPIC_0000002527987970)：申请连接句柄。  - [SQLAllocStmt](https://support.huaweicloud.com/centralized-devg-v8-gaussdb/gaussdb-42-0117.html#ZH-CN_TOPIC_0000002527828028)：申请语句句柄。   |
| 设置环境属性 | [SQLSetEnvAttr](https://support.huaweicloud.com/centralized-devg-v8-gaussdb/gaussdb-42-0134.html#ZH-CN_TOPIC_0000002559107757)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| 设置连接属性 | [SQLSetConnectAttr](https://support.huaweicloud.com/centralized-devg-v8-gaussdb/gaussdb-42-0133.html#ZH-CN_TOPIC_0000002527828036)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| 连接数据库  | [SQLConnect](https://support.huaweicloud.com/centralized-devg-v8-gaussdb/gaussdb-42-0121.html#ZH-CN_TOPIC_0000002527828030)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
   
以开发源程序DBtest.c为例（完整示例请参考[获取和处理数据库中的数据](https://support.huaweicloud.com/centralized-devg-v8-gaussdb/gaussdb-42-1627.html#ZH-CN_TOPIC_0000002527828024)）：
```
// DBtest.c (compile with: libodbc.so)
// 程序头文件和全局变量请参考完整示例
// 申请环境句柄。       
V_OD_erg = SQLAllocHandle(SQL_HANDLE_ENV,SQL_NULL_HANDLE,&V_OD_Env);     
if ((V_OD_erg != SQL_SUCCESS) && (V_OD_erg != SQL_SUCCESS_WITH_INFO))        
{           
   printf("Error AllocHandle\n");           
   exit(0);        
}
// 设置版本信息（环境属性）。         
SQLSetEnvAttr(V_OD_Env, SQL_ATTR_ODBC_VERSION, (void*)SQL_OV_ODBC3, 0);
// 申请连接句柄  。      
V_OD_erg = SQLAllocHandle(SQL_HANDLE_DBC, V_OD_Env, &V_OD_hdbc);     
if ((V_OD_erg != SQL_SUCCESS) && (V_OD_erg != SQL_SUCCESS_WITH_INFO))      
{                     
   SQLFreeHandle(SQL_HANDLE_ENV, V_OD_Env);          
   exit(0);       
}
// 获取用户名和用户密码。
char *userName;
userName = getenv("EXAMPLE_USERNAME_ENV");
char *password;
password = getenv("EXAMPLE_PASSWORD_ENV");
// 设置连接属性。
SQLSetConnectAttr(V_OD_hdbc, SQL_ATTR_AUTOCOMMIT,(SQLPOINTER *)SQL_AUTOCOMMIT_ON, 0);
// 连接数据库，这里的userName与password分别表示连接数据库的用户名和用户密码。
// 如果odbc.ini文件中已经配置了用户名密码，那么这里可以留空（""）；但是不建议这么做，因为一旦odbc.ini权限管理不善，将导致数据库用户密码泄露。    
V_OD_erg = SQLConnect(V_OD_hdbc, (SQLCHAR*) "gaussdb", SQL_NTS,  
   (SQLCHAR*) userName, SQL_NTS,  (SQLCHAR*) password, SQL_NTS);        
if ((V_OD_erg != SQL_SUCCESS) && (V_OD_erg != SQL_SUCCESS_WITH_INFO))      
{           
  printf("Error SQLConnect %d\n",V_OD_erg);            
  SQLFreeHandle(SQL_HANDLE_ENV, V_OD_Env);       
  exit(0);        
}     
printf("Connected !\n");
```
