c oracle连接代码

2023年 8月 4日 31.7k 0

在C语言中,连接Oracle数据库是一个非常常见的需求。而在Oracle数据库中使用C语言连接的方法也有很多种,例如OCI、ODBC等。本文将主要介绍如何使用OCI进行C语言与Oracle数据库的连接。

先给出一个简单的示例:在C语言中连接Oracle数据库,需要引入oci头文件以及ORACLE_HOME目录下的oci库文件。其中oci的头文件包括:

#include#include#include

而oci库文件则包括:

/lib/libclntsh.so # for linux

\bin\oci.dll # for windows

其中

是Oracle数据库安装路径。以Linux系统为例,如果ORACLE_HOME在/opt下,那么库文件路径将是/opt/oracle/product/11.2.0/db_1/lib/libclntsh.so。

下面是一个简单的示例代码,用于连接数据库:

int main()
{
OCIEnv* envhp;
OCIError* errhp;
OCISvcCtx* svchp;
OCIStmt* stmthp;
OCIServer* srvhp;
char username[20];
char password[20];
char dbstring[20];
// 初始化环境
OCIInitialize(OCI_DEFAULT, NULL, NULL, NULL, NULL);
// 创建环境句柄
OCIEnvCreate(&envhp, OCI_THREADED, NULL, NULL, NULL, NULL, 0, NULL);
// 创建错误句柄
OCIHandleAlloc((dvoid*) envhp, (dvoid**) &errhp, OCI_HTYPE_ERROR, 0, NULL);
// 创建服务器句柄
OCIHandleAlloc((dvoid*) envhp, (dvoid**) &srvhp, OCI_HTYPE_SERVER, 0, NULL);
// 设置服务器名称和用户名/密码
printf("Input server name:");
scanf("%s", dbstring);
printf("Input username:");
scanf("%s", username);
printf("Input password:");
scanf("%s", password);
OCIServerAttach(srvhp, errhp, (text*) dbstring, strlen(dbstring), OCI_DEFAULT);
OCIAttrSet((dvoid*) svchp, OCI_HTYPE_SERVER, (dvoid*) srvhp, 0, OCI_ATTR_SERVER, errhp);
// 创建服务上下文句柄
OCIHandleAlloc((dvoid*) envhp, (dvoid**) &svchp, OCI_HTYPE_SVCCTX, 0, NULL);
OCIAttrSet((dvoid*) svchp, OCI_HTYPE_SVCCTX, (dvoid*) srvhp, 0, OCI_ATTR_SERVER, errhp);
// 分配语句句柄
OCIHandleAlloc((dvoid*) envhp, (dvoid**) &stmthp, OCI_HTYPE_STMT, 0, NULL);
// 执行SQL query,比如查询表
OCIStmtPrepare(stmthp, errhp, (text*) "select * from my_table", strlen("select * from my_table"), OCI_NTV_SYNTAX, OCI_DEFAULT);
OCIStmtExecute(svchp, stmthp, errhp, 0, 0, NULL, NULL, OCI_DEFAULT);
// 释放所有句柄
OCIHandleFree((dvoid*) svchp, OCI_HTYPE_SVCCTX);
OCIHandleFree((dvoid*) srvhp, OCI_HTYPE_SERVER);
OCIHandleFree((dvoid*) errhp, OCI_HTYPE_ERROR);
OCIHandleFree((dvoid*) envhp, OCI_HTYPE_ENV);
return 0;
}

在上述代码中,首先需要初始化环境,然后依次创建环境句柄、错误句柄、服务器句柄、服务上下文句柄、语句句柄,并设置服务器、用户名和密码等信息。接着可以执行相应的SQL语句,最后需要释放所有的句柄。

除了上述示例代码中用到的函数之外,OCI还有很多其他的使用方法,例如执行SQL update操作、获取结果集等。因此,在使用OCI连接Oracle数据库时,需要仔细阅读相关文档,了解具体的API函数及其使用方法。

相关文章

pt-kill工具的使用
pt-ioprofile工具包的使用
数据库管理-第216期 Oracle的高可用-01(20240703)
DBMS_REPAIR EXAMPLE SCRIPT WITH PARTITION
数据库事务的四大特性: ACID 
使用BBED修复损坏的SYSTEM文件头

发布评论