c 调用oracle库

在软件开发中,常常需要访问数据库,Oracle作为大型企业级数据库管理系统,被广泛应用于各行各业。对于使用C语言进行开发的项目而言,调用Oracle库是常见的操作之一。

我们可以使用OCI(Oracle Call Interface)库进行与Oracle数据库的交互,OCI是Oracle对于数据库访问方式的一种抽象描述,提供了一套API,可用于访问Oracle数据库,并且具有高度的灵活性。

下面是使用OCI库进行连接Oracle数据库并执行SQL语句的示例代码:

#include#include#include... void main() { OCIEnv *envhp; OCIError *errhp; OCIServer *svrhp; OCISvcCtx *svchp; OCIStmt *stmthp; OCIDefine *defhp; OCIBind *bndhp; char* username = "DB_USER"; char* password = "DB_PASS"; char* dbname = "DB_NAME"; sword status; /* 初始化环境句柄 */ status = OCIEnvCreate(&envhp, OCI_DEFAULT, 0, 0, 0, 0, 0, 0); /* 初始化错误句柄 */ status = OCIHandleAlloc((dvoid *)envhp, (dvoid **)&errhp, OCI_HTYPE_ERROR, 0, 0); /* 创建服务器句柄 */ status = OCIHandleAlloc((dvoid *)envhp, (dvoid **)&svrhp, OCI_HTYPE_SERVER, 0, 0); /* 创建服务上下文句柄 */ status = OCIHandleAlloc((dvoid *)envhp, (dvoid **)&svchp, OCI_HTYPE_SVCCTX, 0, 0); /* 绑定服务器句柄到服务上下文 */ status = OCIAttrSet((dvoid *)svchp, OCI_HTYPE_SVCCTX, (dvoid *)svrhp, 0, OCI_ATTR_SERVER, errhp); /* 连接数据库 */ status = OCILogon2(envhp, errhp, &svchp, (OraText *)username, strlen(username), (OraText *)password, strlen(password), (OraText *)dbname, strlen(dbname), OCI_DEFAULT); /* 准备SQL语句 */ status = OCIHandleAlloc((dvoid *)envhp, (dvoid **)&stmthp, OCI_HTYPE_STMT, 0, 0); status = OCIStmtPrepare(stmthp, errhp, (OraText *)"select * from emp", strlen("select * from emp"), OCI_NTV_SYNTAX, OCI_DEFAULT); /* 执行SQL语句 */ status = OCIStmtExecute(svchp, stmthp, errhp, 0, 0, 0, 0, OCI_DEFAULT); /* 处理结果集 */ /* TODO... */ /* 释放句柄 */ status = OCIHandleFree((dvoid *)envhp, OCI_HTYPE_STMT); status = OCILogoff(svchp, errhp); status = OCIHandleFree((dvoid *)envhp, OCI_HTYPE_SVCCTX); status = OCIHandleFree((dvoid *)envhp, OCI_HTYPE_SERVER); status = OCIHandleFree((dvoid *)envhp, OCI_HTYPE_ERROR); status = OCIEnvFree(envhp); }