首页数据库c oracle 框架

c oracle 框架

时间2023-10-21 21:11:02发布访客分类数据库浏览265
导读:在软件开发的过程中,使用框架可以大大加快开发进度和减轻开发者的工作量。其中,C Oracle框架应该是大家非常熟悉并经常使用的一种框架。C Oracle框架的主要作用是在C语言中对Oracle数据库进行操作,让开发者能够更加方便地进行数据库...

在软件开发的过程中,使用框架可以大大加快开发进度和减轻开发者的工作量。其中,C Oracle框架应该是大家非常熟悉并经常使用的一种框架。

C Oracle框架的主要作用是在C语言中对Oracle数据库进行操作,让开发者能够更加方便地进行数据库相关的开发。下面我们来举几个例子来说明C Oracle框架的具体用途。

/*连接数据库*/#include stdio.h>
    #include stdlib.h>
    #include oci.h>
    OCIEnv *envhp;
    OCIError *errhp;
    OCIServer *srvhp;
    OCIStmt *stmthp;
    OCISession *usrhp;
    OCISvcCtx *svchp;
    OCIParam *parmp;
int main(){
    OCIInitialize((ub4) OCI_OBJECT,&
    envhp,(dvoid *)0,(dvoid * (*)(dvoid *,size_t)) 0,(dvoid * (*)(dvoid *, dvoid *, size_t))0,(void (*)(dvoid *, dvoid *)) 0 );
    OCIHandleAlloc((dvoid *) envhp, (dvoid **) &
    errhp, OCI_HTYPE_ERROR, 0, (dvoid **) 0);
    OCIHandleAlloc((dvoid *) envhp, (dvoid **) &
    srvhp, OCI_HTYPE_SERVER, 0, (dvoid **) 0);
    OCIServerAttach (srvhp, errhp, (text *) "ORCL", 4, OCI_DEFAULT);
    OCIHandleAlloc ((dvoid *) envhp, (dvoid **) &
    svchp, (ub4) OCI_HTYPE_SVCCTX, 0, (dvoid **) 0);
    OCIAttrSet ((dvoid *) svchp, (ub4) OCI_HTYPE_SVCCTX, (dvoid *) srvhp, (ub4) 0, OCI_ATTR_SERVER, errhp);
    OCIHandleAlloc((dvoid *) envhp, (dvoid **) &
    usrhp, OCI_HTYPE_SESSION, 0, (dvoid **) 0);
    OCIAttrSet((dvoid *) usrhp, (ub4) OCI_HTYPE_SESSION, (dvoid *)"SCOTT", (ub4)strlen("SCOTT"), OCI_ATTR_USERNAME, errhp);
    OCIAttrSet((dvoid *) usrhp, (ub4) OCI_HTYPE_SESSION, (dvoid *)"TIGER", (ub4)strlen("TIGER"), OCI_ATTR_PASSWORD, errhp);
    OCISessionBegin(svchp,  errhp, usrhp, OCI_CRED_RDBMS, OCI_DEFAULT);
    OCIAttrSet((dvoid *) svchp, (ub4) OCI_HTYPE_SVCCTX, (dvoid *) usrhp, (ub4) 0, OCI_ATTR_SESSION, errhp);
}
    

以上是连接数据库的代码示例。首先需要初始化环境,然后根据自己需要分配不同的Handle,最后用OCISessionBegin函数进行登录验证,即可连接到Oracle数据库。

/*创建表*/#include stdio.h>
    #include stdlib.h>
    #include oci.h>
    OCIEnv *envhp;
    OCIError *errhp;
    OCIServer *srvhp;
    OCIStmt *stmthp;
    OCISession *usrhp;
    OCISvcCtx *svchp;
    OCIParam *parmp;
int main(){
    /*省略连接数据库代码*/int ret;
    char *stmt = "CREATE TABLE EMPLOYEE (EMPNO NUMBER(4) NOT NULL,ENAME VARCHAR2(10),DEPTNO NUMBER(2))";
    ret = OCIStmtPrepare(stmthp, errhp, stmt, strlen(stmt), OCI_NTV_SYNTAX, OCI_DEFAULT);
if(ret != OCI_SUCCESS){
    printf("OCIStmtPrepare failed.");
    return -1;
}
    ret = OCIStmtExecute(svchp, stmthp, errhp, OCI_DEFAULT, 0, NULL, NULL, OCI_COMMIT_ON_SUCCESS);
if(ret != OCI_SUCCESS){
    printf("OCIStmtExecute failed.");
    return -1;
}
    printf("Table EMPLOYEE created.\n");
}
    

以上是创建表的代码示例。需要用OCIStmtPrepare函数准备SQL语句,然后用OCIStmtExecute函数在数据库中执行,即可在Oracle数据库中创建一张名为EMPLOYEE的表。

/*查询表*/#include stdio.h>
    #include stdlib.h>
    #include oci.h>
    OCIEnv *envhp;
    OCIError *errhp;
    OCIServer *srvhp;
    OCIStmt *stmthp;
    OCISession *usrhp;
    OCISvcCtx *svchp;
    OCIParam *parmp;
int main(){
    /*省略连接数据库代码*/int ret;
    char *stmt = "SELECT * FROM EMPLOYEE";
    ret = OCIStmtPrepare(stmthp, errhp, stmt, strlen(stmt), OCI_NTV_SYNTAX, OCI_DEFAULT);
if(ret != OCI_SUCCESS){
    printf("OCIStmtPrepare failed.");
    return -1;
}
    ret = OCIStmtExecute(svchp, stmthp, errhp, OCI_DEFAULT, 0, NULL, NULL, OCI_COMMIT_ON_SUCCESS);
if(ret != OCI_SUCCESS){
    printf("OCIStmtExecute failed.");
    return -1;
}
    OCIParam *colhp;
    ub4 icol;
    ub2 col_type;
    text col_name[1024];
    ub2 name_len;
    sb4 col_width;
    ub4 uid;
    ret = OCIStmtFetch(stmthp, errhp, 1, OCI_FETCH_NEXT, OCI_DEFAULT);
while(ret == OCI_SUCCESS){
    OCIParamGet (stmthp, OCI_HTYPE_STMT, errhp, (void **)&
    colhp, icol);
    OCIAttrGet(colhp, OCI_DTYPE_PARAM, (void *)&
    col_name, (ub4 *)&
    name_len, OCI_ATTR_NAME, errhp);
    OCIAttrGet(colhp, OCI_DTYPE_PARAM, (void *)&
    col_type, NULL, OCI_ATTR_DATA_TYPE, errhp);
    OCIAttrGet(colhp, OCI_DTYPE_PARAM, (void *)&
    col_width, NULL, OCI_ATTR_DATA_SIZE, errhp);
    printf("%.*s, type=%d, width=%d\n",name_len,col_name,col_type,col_width);
    ret = OCIStmtFetch(stmthp, errhp, 1, OCI_FETCH_NEXT, OCI_DEFAULT);
}
}
    

以上是查询表的代码示例。需要用OCIStmtPrepare函数准备SQL语句,然后用OCIStmtExecute函数在数据库中执行。用OCIParamGet获取每个字段的详细信息,并输出结果。

综上所述,C Oracle框架可以帮助开发者更好更快地进行Oracle数据库相关开发。通过以上示例代码,相信大家已经对C Oracle框架有了一个系统的认识。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: c oracle 框架
本文地址: https://pptw.com/jishu/504950.html
c oracle封装 c oracle录入

游客 回复需填写必要信息