c 操作oracle数据库

C语言是一种非常通用的编程语言,其应用范围非常广泛。除了用于操作系统、嵌入式设备、网络编程等,“大而全”的应用领域之外,C语言在数据库开发领域也有很大的用武之地。作为一种通用的编程语言,C语言甚至可以通过各种通用的编程接口连接到多种数据库。

Oracle数据库是一种非常流行的关系型数据库,作为一个庞大的数据库,Oracle数据库有自己的服务器,并且需要以特定的形式连接。对于C语言,连接和操作Oracle数据库需要使用Oracle自己的编程接口。

#include#include#includeint main(int argc, char *argv[]) { /*Oracle初始化*/ OCIEnv *env; OCIEnvCreate(&env, OCI_THREADED | OCI_OBJECT, NULL, NULL, NULL, NULL, 0, NULL); OCIError *err; OCIHandleAlloc(env, (void **)&err, OCI_HTYPE_ERROR, 0, NULL); /*建立数据库连接*/ OCIEnv *env; OCIServer *srv; OCISession *session; OCISvcCtx *svc; OCIHandleAlloc(env, (void **)&srv, OCI_HTYPE_SERVER, 0, NULL); OCIHandleAlloc(env, (void **)&session, OCI_HTYPE_SESSION, 0, NULL); OCIHandleAlloc(env, (void **)&svc, OCI_HTYPE_SVCCTX, 0, NULL); /*填充连接的用户名和密码*/ OCIAttrSet(srv, OCI_HTYPE_SERVER, "USERNAME", strlen("USERNAME"), OCI_ATTR_USERNAME, err); OCIAttrSet(srv, OCI_HTYPE_SERVER, "PASSWORD", strlen("PASSWORD"), OCI_ATTR_PASSWORD, err); /*连接数据库*/ OCIAttrSet(svc, OCI_HTYPE_SVCCTX, srv, 0, OCI_ATTR_SERVER, err); OCISessionBegin(svc, err, session, OCI_CRED_RDBMS, OCI_DEFAULT); OCIAttrSet(svc, OCI_HTYPE_SVCCTX, session, 0, OCI_ATTR_SESSION, err); /*查询数据*/ oci_statement *stmt; OCIDefine *def; OCIStmtPrepare(stmt, err, "SELECT * FROM table", strlen("SELECT * FROM table"), OCI_NTV_SYNTAX, OCI_DEFAULT); OCIHandleAlloc(env, (void **)&def, OCI_HTYPE_DEFINE, 0, NULL); OCIDefineByPos(stmt, &def, err, 1, sizeof(data), SQLT_STR, NULL, NULL, NULL, OCI_DEFAULT); OCIStmtExecute(svc, stmt, err, 0, 0, NULL, NULL, OCI_DEFAULT); /*获取查询结果*/ char data[200] = "" OCIDefineGetData(stmt, &def, 1, (void *)&data, sizeof(data), SQLT_STR, NULL); printf("%s", data); /*释放资源*/ OCIHandleFree(svc, OCI_HTYPE_SVCCTX); OCIHandleFree(session, OCI_HTYPE_SESSION); OCIHandleFree(srv, OCI_HTYPE_SERVER); OCIHandleFree(err, OCI_HTYPE_ERROR); OCIHandleFree(env, OCI_HTYPE_ENV); return 0; }