
# 连接数据库涉及的API
在测试连接数据库成功后，ODBC API提供了一组函数来连接数据库，如[表1]所示。
 表1相关API说明 
| 功能     | API                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
|:---|:---|
| 申请句柄资源 | [SQLAllocHandle](https://support.huaweicloud.com/centralized-devg-v2-gaussdb/gaussdb_42_0114.html#ZH-CN_TOPIC_0000002186175478)：申请句柄资源，可替代如下函数： - [SQLAllocEnv](https://support.huaweicloud.com/centralized-devg-v2-gaussdb/gaussdb_42_0112.html#ZH-CN_TOPIC_0000002221381541)：申请环境句柄  - [SQLAllocConnect](https://support.huaweicloud.com/centralized-devg-v2-gaussdb/gaussdb_42_0113.html#ZH-CN_TOPIC_0000002186015854)：申请连接句柄  - [SQLAllocStmt](https://support.huaweicloud.com/centralized-devg-v2-gaussdb/gaussdb_42_0115.html#ZH-CN_TOPIC_0000002221495981)：申请语句句柄   |
| 设置环境属性 | [SQLSetEnvAttr](https://support.huaweicloud.com/centralized-devg-v2-gaussdb/gaussdb_42_0132.html#ZH-CN_TOPIC_0000002221381561)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| 设置连接属性 | [SQLSetConnectAttr](https://support.huaweicloud.com/centralized-devg-v2-gaussdb/gaussdb_42_0131.html#ZH-CN_TOPIC_0000002221496001)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| 连接数据库  | [SQLConnect](https://support.huaweicloud.com/centralized-devg-v2-gaussdb/gaussdb_42_0119.html#ZH-CN_TOPIC_0000002221495985)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
   
以开发源程序DBtest.c为例（完整示例请参考[获取和处理数据库中的数据](https://support.huaweicloud.com/centralized-devg-v2-gaussdb/gaussdb_42_0108.html#ZH-CN_TOPIC_0000002221381537)）：
```
// 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");
```
