云数据库 GaussDB-连接数据库涉及的API

时间:2025-02-12 15:05:25

连接数据库涉及的API

在测试连接数据库成功后,ODBC API提供了一组函数来连接数据库,如表1所示。

表1 相关API说明

功能

API

申请句柄资源

SQLAllocHandle:申请句柄资源,可替代如下函数:

  • SQLAllocEnv:申请环境句柄。
  • SQLAllocConnect:申请连接句柄。
  • SQLAllocStmt:申请语句句柄。

设置环境属性

SQLSetEnvAttr

设置连接属性

SQLSetConnectAttr

连接数据库

SQLConnect

以开发源程序DBtest.c为例(完整示例请参考获取和处理数据库中的数据):

 1 2 3 4 5 6 7 8 9101112131415161718192021222324252627282930313233343536373839404142
// DBtest.c (compile with: libodbc.so)// 程序头文件和全局变量请参考完整示例// 申请环境句柄。       V_OD_erg = SQLAllocHandle(SQL_HANDLE_ENV,SQL_NULL_HANDLE,&V_OD_Env);     if ((V_OD_erg != SQL_SUC CES S) && (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");
support.huaweicloud.com/centralized-devg-v8-gaussdb/gaussdb-42-1623.html