c linux oracle
今天我们要讨论的主题是C语言在Linux平台上如何连接Oracle数据库。
首先,我们需要用到Oracle提供的C语言库OCI(Oracle Call Interface),这个库提供了一套API,使得程序员可以用C语言连接和操作Oracle数据库。
#include#include#includeint main() { OCIEnv *envhp; OCIServer *srvhp; OCIError *errhp; OCISession *usrhp; OCISvcCtx *svchp; OCIInitialize((ub4) OCI_DEFAULT, (dvoid *)0, (dvoid * (*)(dvoid *, size_t)) 0, (dvoid * (*)(dvoid *, dvoid *, size_t))0, (void (*)(dvoid *, dvoid *)) 0); OCIEnvInit(&envhp, OCI_DEFAULT, 0, (dvoid **) 0); OCIHandleAlloc((dvoid *)envhp, (dvoid **)&errhp, OCI_HTYPE_ERROR, (size_t)0, (dvoid **)0); OCIHandleAlloc((dvoid *)envhp, (dvoid **)&srvhp, OCI_HTYPE_SERVER, (size_t)0, (dvoid **)0); sb2 connect_error = OCIServerAttach(srvhp, errhp, (text *)"SERVER", (sb4) 7, OCI_DEFAULT); if (connect_error == 0) { printf("Connected to Oracle!\n"); OCIHandleAlloc((dvoid *)envhp, (dvoid **)&svchp, OCI_HTYPE_SVCCTX, (size_t)0, (dvoid **)0); OCIHandleAlloc((dvoid *)envhp, (dvoid **)&usrhp, OCI_HTYPE_SESSION, (size_t)0, (dvoid **)0); OCILogon(envhp, errhp, &svchp, (text *)"USER", (ub4)4, (text *)"PASSWORD", (ub4) 8, (text *)"DATABASE", (ub4) 8); OCIAttrSet((dvoid *)svchp, OCI_HTYPE_SVCCTX, (dvoid *)usrhp, (ub4)0, OCI_ATTR_SESSION, errhp); OCISessionBegin(svchp, errhp, usrhp, OCI_CRED_RDBMS, OCI_DEFAULT); printf("Logged in!\n"); // Perform database operations ... // ... OCISessionEnd(svchp, errhp, usrhp, OCI_DEFAULT); OCILogoff(svchp, errhp); } else { printf("Connection failed.\n"); OCIErrorGet((dvoid *)errhp, (ub4)1, (text *)0, &connect_error, (text *)0, (ub4)0, (ub4)OCI_HTYPE_ERROR); printf("%.*s\n", 512, connect_error); } OCIHandleFree((dvoid *)srvhp, OCI_HTYPE_SERVER); OCIHandleFree((dvoid *)errhp, OCI_HTYPE_ERROR); OCIHandleFree((dvoid *)envhp, OCI_HTYPE_ENV); return 0; }