更新时间:2024-11-12 GMT+08:00
分享

连接数据库涉及的API

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

表1 相关API说明

功能

API

申请句柄资源

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

设置环境属性

SQLSetEnvAttr

设置连接属性

SQLSetConnectAttr

连接数据库

SQLConnect

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

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
// 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*) "MPPODBC", 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");

相关文档