首页数据库c odbc 连接oracle

c odbc 连接oracle

时间2023-10-21 18:50:02发布访客分类数据库浏览577
导读:在开发应用时,经常需要连接数据库获取数据。而ODBC(Open Database Connectivity)作为一种通用数据库API,是很多语言的标准接口之一,也是使用较为广泛的数据库连接方式之一。在C语言中使用ODBC连接Oracle数据...

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

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

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

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

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

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

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

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

#include stdio.h>
    #include sql.h>
    #include sqlext.h>
#define SQL_RESULT_LEN  240#define SQL_RETURN_CODE_LEN 1000int main(void) {
    SQLHENV env;
    SQLHDBC dbc;
    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*)"Driver={
Oracle in OraClient11g_home1}
    ;
    Server=192.168.10.10:1521/orcl;
    Uid=user;
    Pwd=password;
    ";
    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, "SELECT * FROM emp WHERE 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);
}
}
else {
    SQLGetDiagRec(SQL_HANDLE_STMT, stmt, 1, NULL, NULL, chReturnCode, SQL_RETURN_CODE_LEN, NULL);
    printf("Error message: %s\n", chReturnCode);
}
    SQLFreeHandle(SQL_HANDLE_STMT, stmt);
}
else {
    SQLGetDiagRec(SQL_HANDLE_DBC, dbc, 1, NULL, NULL, chReturnCode, SQL_RETURN_CODE_LEN, NULL);
    printf("Error message: %s\n", chReturnCode);
}
    SQLDisconnect(dbc);
    SQLFreeHandle(SQL_HANDLE_DBC, dbc);
    SQLFreeHandle(SQL_HANDLE_ENV, env);
    return 0;
}
    

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

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

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: c odbc 连接oracle
本文地址: https://pptw.com/jishu/504809.html
c oracle long类型 c oracle 存储过程调用存储过程

游客 回复需填写必要信息