ODBC(Open Database Connectivity)是一个用于数据库通信的标准接口,由于ODBC提供了统一的接口,使得应用程序可以通过同一套源码连接不同的数据库。
Oracle数据库作为广泛使用的企业级数据库,也有其对应的ODBC驱动程序。下面介绍如何使用ODBC连接Oracle数据库。
首先需要安装Oracle的ODBC驱动程序,可以从Oracle官网下载相应的驱动程序并进行安装。
1. 下载ODBC驱动程序
官网下载地址:https://www.oracle.com/database/technologies/instant-client/winx64-64-downloads.html
选择对应的版本进行下载以及安装
2. 配置ODBC数据源
进入"控制面板"->"管理工具"->"ODBC数据源",选择"系统DSN"选项卡
选择"Oracle in instantclient_11_2",点击"配置"按钮
填写Oracle数据库的连接信息,例如:
Data Source Name:Oracle_test
Description:连接测试Oracle数据库
TNS Service Name: test
User Name:test
Password:****(数据库密码)
点击"测试连接"按钮,测试是否可以成功连接Oracle数据库
3. 连接Oracle数据库
使用C++语言编写代码进行ODBC连接Oracle数据库。例如:
#include <sql.h>
#include <sqlext.h>
int main()
{
/* ODBC初始化 */
SQLHENV env;
SQLRETURN ret;
ret = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &env);
ret = SQLSetEnvAttr(env, SQL_ATTR_ODBC_VERSION, (SQLPOINTER)SQL_OV_ODBC3_80, SQL_IS_INTEGER);
/* ODBC连接Oracle */
SQLHDBC dbconn;
SQLCHAR* dsn = (SQLCHAR*)"Oracle_test";
SQLCHAR* user = (SQLCHAR*)"test";
SQLCHAR* password = (SQLCHAR*)"123456";
SQLCHAR conn_str[1024];
ret = SQLAllocHandle(SQL_HANDLE_DBC, env, &dbconn);
ret = SQLConnect(dbconn, dsn, SQL_NTS, user, SQL_NTS, password, SQL_NTS);
if (ret != SQL_SUCCESS && ret != SQL_SUCCESS_WITH_INFO)
{
printf("ODBC connect Oracle failed\n");
return 1;
}
/* ODBC查询Oracle */
SQLHSTMT stmt;
SQLCHAR sql_cmd[1024] = "SELECT * FROM emp";
ret = SQLAllocHandle(SQL_HANDLE_STMT, dbconn, &stmt);
ret = SQLExecDirect(stmt, sql_cmd, SQL_NTS);
if (ret != SQL_SUCCESS && ret != SQL_SUCCESS_WITH_INFO)
{
printf("ODBC execute SQL failed\n");
return 1;
}
/* ODBC获取查询结果 */
SQLINTEGER empno;
SQLCHAR ename[20];
while (ret = SQLFetch(stmt) == SQL_SUCCESS)
{
SQLGetData(stmt, 1, SQL_C_LONG, &empno, 0, nullptr);
SQLGetData(stmt, 2, SQL_C_CHAR, ename, sizeof(ename), nullptr);
printf("empno: %d, ename: %s\n", empno, ename);
}
/* ODBC释放资源 */
SQLFreeHandle(SQL_HANDLE_STMT, stmt);
SQLDisconnect(dbconn);
SQLFreeHandle(SQL_HANDLE_DBC, dbconn);
SQLFreeHandle(SQL_HANDLE_ENV, env);
return 0;
}
上述代码中,ODBC初始化的部分是由SQLAllocHandle和SQLSetEnvAttr函数实现的。其中,SQL_ATTR_ODBC_VERSION参数指定了ODBC的版本号为3.8。
ODBC连接Oracle的部分是由SQLConnect函数实现的,其中dsn参数是ODBC数据源名称,user和password参数分别是Oracle数据库的用户名和密码。
ODBC查询Oracle的部分是由SQLExecDirect函数实现的,其中sql_cmd参数是要执行的SQL语句。
ODBC获取查询结果的部分是由SQLFetch和SQLGetData函数实现的,其中SQLGetString函数获取了empno和ename两个字段的值,并将其输出到控制台。
最后,ODBC释放资源使用了SQLFreeHandle函数。
通过上述步骤和代码,我们可以连接Oracle数据库,并实现数据的查询。