c 查询oracle数据库

在c语言的开发中,使用数据库是一个常见且关键的操作。Oracle数据库作为企业级数据库系统,应用广泛且稳定,如何通过C程序查询Oracle数据库是进行数据操作的一个重要环节。本篇文章将详细介绍如何使用C语言查询Oracle数据库。

连接Oracle数据库

在使用C语言查询Oracle数据库之前,需要先建立连接。一般情况下,使用ODBC或者OCI连接Oracle数据库会比较方便。以下是使用OCI连接数据库的示例代码:

OCIEnv *envhp; //环境句柄 OCIServer *srvhp; //服务器句柄 OCIError *errhp; //错误句柄 OCISession *usrhp; //用户句柄 OCISvcCtx *svchp; //服务句柄 OCIDefine *defhp; //查询结果定义句柄 OCIBind *bindp; //绑定变量句柄 OCIStmt *stmthp; //语句句柄 sword retcode; //Oracle函数返回值 char *username; //Oracle用户名 char *password; //Oracle用户密码 char *servername; //Oracle服务器名 //创建环境句柄 OCIEnvCreate(&envhp, OCI_OBJECT|OCI_THREADED, NULL, 0, NULL, NULL, 0, NULL); //创建错误句柄 OCIHandleAlloc(envhp, (void **)&errhp, OCI_HTYPE_ERROR, 0, NULL); //创建服务器句柄 OCIHandleAlloc(envhp, (void **)&srvhp, OCI_HTYPE_SERVER, 0, NULL); //创建用户句柄 OCIHandleAlloc(envhp, (void **)&usrhp, OCI_HTYPE_SESSION, 0, NULL); //创建服务句柄 OCIHandleAlloc(envhp, (void **)&svchp, OCI_HTYPE_SVCCTX, 0, NULL); //连接数据库 OCIAttrSet(srvhp, OCI_HTYPE_SERVER, servername, strlen(servername), OCI_ATTR_SERVER, errhp); OCIAttrSet(svchp, OCI_HTYPE_SVCCTX, srvhp, 0, OCI_ATTR_SERVER, errhp); OCIAttrSet(usrhp, OCI_HTYPE_SESSION, username, strlen(username), OCI_ATTR_USERNAME, errhp); OCIAttrSet(usrhp, OCI_HTYPE_SESSION, password, strlen(password), OCI_ATTR_PASSWORD, errhp); retcode = OCISessionBegin(svchp, errhp, usrhp, OCI_CRED_RDBMS, OCI_DEFAULT); if (retcode) { OCIHandleFree(svchp, OCI_HTYPE_SVCCTX); OCIHandleFree(srvhp, OCI_HTYPE_SERVER); OCIHandleFree(errhp, OCI_HTYPE_ERROR); return -1; } OCIAttrSet(svchp, OCI_HTYPE_SVCCTX, usrhp, 0, OCI_ATTR_SESSION, errhp);