当前位置:数码通 > 动态

c odbc连接oracle

来源于 数码通 2023-10-01 02:57

开发应用程序时,经常需要连接数据库获取数据。 ODBC(Open Database Connectivity)作为通用数据库API,是多种语言的标准接口之一,也是应用最广泛的数据库连接方式之一。使用C语言中的ODBC连接Oracle数据库可以有效地完成数据访问任务。下面将介绍如何用C语言使用ODBC库连接Oracle数据库。

为了连接到Oracle,您首先需要知道Oracle的ODBC驱动程序名称和连接字符串。以32位Oracle客户端为例,ODBC驱动程序名称为“Oracle in OraClient11g_home1”,连接字符串格式为:

驱动程序={驱动程序名称};
Server={服务器名称/IP地址}:{端口号}/{服务名称};
Uid={用户名};
Pwd={password};

具体来说,对于以下 Oracle 数据库连接:

用户名:用户
密码: 密码
数据库服务器IP地址:192.168.10.10
监听端口号:1521
服务名称:orcl

对应的ODBC连接字符串应为:

"Driver={OraClient11g_home1中的Oracle};Server=192.168.10.10:1521/orcl;Uid=user;Pwd=password;"

连接字符串确定后,就可以用C语言进行ODBC编程了。下面是一个简单的C语言程序示例:

#include #include #include #define SQL_RESULT_LEN 240
#定义 SQL_RETURN_CODE_LEN 1000
int 主函数(无效){
SQLHENV 环境;
SQLHDBC 数据库;
SQLHSTMT stmt;
SQLRETURN ret;
SQLCHAR sql[1000];
SQLCHAR chResult[SQL_RESULT_LEN + 1];
SQLCHAR chReturnCode[SQL_RETURN_CODE_LEN + 1];SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &env);
SQLSetEnvAttr(env, SQL_ATTR_ODBC_VERSION, (void*)SQL_OV_ODBC3, SQL_IS_INTEGER);
SQLAllocHandle(SQL_HANDLE_DBC, env, &dbc);
SQLCHAR* szConnectStr = (SQLCHAR*)"驱动程序={OraClient11g_home1 中的 Oracle};服务器=192.168.10.10:1521/orcl;Uid=用户;Pwd=密码;";
SQLSMALLINT nConnectStrLen = (SQLSMALLINT)strlen((char*)szConnectStr);
SQLCHAR chOutConnectStr[1024];
SQLSMALLINT nOutConnectStrLen;
ret = SQLDriverConnect(dbc, NULL, szConnectStr, nConnectStrLen, chOutConnectStr, sizeof(chOutConnectStr), &nOutConnectStrLen, SQL_DRIVER_NOPROMPT);
if (ret == SQL_SUCCESS || ret == SQL_SUCCESS_WITH_INFO) {
SQLAllocHandle(SQL_HANDLE_STMT, dbc, &stmt);
sprintf((char*)sql, "从 emp 中选择 *,其中 deptno = 20");
ret = SQLExecDirect(stmt, sql, SQL_NTS);
if (ret == SQL_SUCCESS || ret == SQL_SUCCESS_WITH_INFO) {
SQLGetData(stmt, 1, SQL_C_CHAR, chResult, SQL_RESULT_LEN, NULL);while (SQLFetch(stmt) == SQL_SUCCESS) {
SQLGetData(stmt, 1, SQL_C_CHAR, chResult, SQL_RESULT_LEN, NULL);
printf("%s\n", chResult);
}
}
别的 {
SQLGetDiagRec(SQL_HANDLE_STMT, stmt, 1, NULL, NULL, chReturnCode, SQL_RETURN_CODE_LEN, NULL);
printf("错误消息:%s\n", chReturnCode);
}
SQLFreeHandle(SQL_HANDLE_STMT, stmt);
}
别的 {
SQLGetDiagRec(SQL_HANDLE_DBC, dbc, 1, NULL, NULL, chReturnCode, SQL_RETURN_CODE_LEN, NULL);
printf("错误消息:%s\n", chReturnCode);
}
SQLDisconnect(dbc);
SQLFreeHandle(SQL_HANDLE_DBC, dbc);
SQLFreeHandle(SQL_HANDLE_ENV, env);
返回0;
}

该程序首先调用SQLAllocHandle函数创建环境句柄和数据库连接句柄。然后使用SQLDriverConnect函数连接Oracle数据库,连接成功后执行一条简单的SELECT语句。最后关闭数据库连接并释放相关资源。

以上是如何用C语言使用ODBC库连接Oracle数据库。在实际开发过程中,可能需要根据具体情况进行一些调整。希望以上内容对读者有所帮助。

登录后参与评论