ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

通过oci.dll访问oracle数据库

2021-08-02 10:01:50  阅读:243  来源: 互联网

标签:oci OCI ub4 void errhp dll HTYPE oracle dvoid


#include"windows.h"
#include"oci.h"
#include"stdio.h"

int main()
{
char buffer[100];

OCISession *authp = (OCISession *) 0;
OCIServer *srvhp;
OCISvcCtx *svchp;
OCIStmt *stmthp;
OCIEnv *envhp;
OCIError *errhp;
short r;
(void) OCIInitialize((ub4) OCI_DEFAULT, (dvoid )0,
(dvoid * (
)(dvoid , size_t)) 0,
(dvoid * (
)(dvoid *, dvoid , size_t))0,
(void (
)(dvoid *, dvoid *)) 0 );
(void) OCIEnvInit( (OCIEnv **) &envhp, OCI_DEFAULT, (size_t) 0,
(dvoid **) 0 );
(void) OCIHandleAlloc( (dvoid *) envhp, (dvoid **) &errhp, OCI_HTYPE_ERROR,
(size_t) 0, (dvoid *) 0);
/
server contexts */
(void) OCIHandleAlloc( (dvoid *) envhp, (dvoid **) &srvhp, OCI_HTYPE_SERVER,
(size_t) 0, (dvoid **) 0);
(void) OCIHandleAlloc( (dvoid *) envhp, (dvoid **) &svchp, OCI_HTYPE_SVCCTX,
(size_t) 0, (dvoid **) 0);
(void) OCIServerAttach( srvhp, errhp, (text )“TEST”, strlen(“TEST”), 0);
/
set attribute server context in the service context */
(void) OCIAttrSet( (dvoid *) svchp, OCI_HTYPE_SVCCTX, (dvoid *)srvhp,
(ub4) 0, OCI_ATTR_SERVER, (OCIError *) errhp);
(void) OCIHandleAlloc((dvoid *) envhp, (dvoid **)&authp,
(ub4) OCI_HTYPE_SESSION, (size_t) 0, (dvoid **) 0);
(void) OCIAttrSet((dvoid *) authp, (ub4) OCI_HTYPE_SESSION,
(dvoid *) “test”, (ub4) strlen(“test”),
(ub4) OCI_ATTR_USERNAME, errhp);
(void) OCIAttrSet((dvoid *) authp, (ub4) OCI_HTYPE_SESSION,
(dvoid *) “oa-123”, (ub4) strlen((char *)“oa-123”),
(ub4) OCI_ATTR_PASSWORD, errhp);
r=OCISessionBegin ( svchp, errhp, authp, OCI_CRED_RDBMS,
(ub4) OCI_DEFAULT);
if(r!=0)
printf(“OCISessionBegin error %d\n”,r);
(void) OCIAttrSet((dvoid *) svchp, (ub4) OCI_HTYPE_SVCCTX,
(dvoid *) authp, (ub4) 0,
(ub4) OCI_ATTR_SESSION, errhp);
r=OCIHandleAlloc( (dvoid *) envhp, (dvoid **) &stmthp,
OCI_HTYPE_STMT, (size_t) 0, (dvoid **) 0);
if(r!=0)
printf(“OCIHandleAlloc stmthp error %d\n”,r);

//删除表
OCIStmtPrepare(stmthp, errhp,
“drop table event”,strlen(“drop table event”),OCI_NTV_SYNTAX, OCI_DEFAULT);
OCIStmtExecute(svchp, stmthp, errhp, (ub4) 1, (ub4) 0,
(CONST OCISnapshot *) 0, (OCISnapshot *) 0,
(ub4) OCI_DEFAULT);

OCITransCommit(svchp, errhp, (ub4)0);
if (stmthp) {
OCIHandleFree((dvoid *)stmthp, (ub4) OCI_HTYPE_STMT);
}
OCISessionEnd((OCISvcCtx *)svchp, (OCIError *)errhp,
(OCISession *)authp, (ub4) OCI_DEFAULT);
OCIServerDetach((OCIServer *)srvhp, (OCIError )errhp,
(ub4)OCI_DEFAULT);
/
Free the handles */
if (authp) {
OCIHandleFree((dvoid *)authp, (ub4) OCI_HTYPE_SESSION);
}
if (svchp) {
OCIHandleFree((dvoid *)svchp, (ub4) OCI_HTYPE_SVCCTX);
}
if (srvhp) {
OCIHandleFree((dvoid *)srvhp, (ub4) OCI_HTYPE_SERVER);
}
if (errhp) {
OCIHandleFree((dvoid *)errhp, (ub4) OCI_HTYPE_ERROR);
}
if (envhp) {
OCIHandleFree((dvoid *)envhp, (ub4) OCI_HTYPE_ENV);
}
}

编译:
set path=c:\mingw\bin
gcc IcvOracle.c -I C:\oracle\product\10.2.0\db_1\OCI\include -L C:\oracle\product\10.2.0\db_1\OCI\lib\MSVC -loci

运行:
set path=C:\oracle\product\10.2.0\db_1\BIN;C:\WINDOWS\system32\wbem
a.exe

标签:oci,OCI,ub4,void,errhp,dll,HTYPE,oracle,dvoid
来源: https://blog.csdn.net/lz280696516/article/details/119318647

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有