VC下使用Proc连接Oracle数据库

1、设置目录:
    打开“tools->Options”,转到“Directories”页,在"Show Directories for"中
       1) 选“Executable Files”,在列表中加入proc.exe的目录(ORACLE_HOME\bin),如:D:\Oracle\product\10.1.0\Client_1\BIN

       2) 选“Include Files”,在列表中加入proc包含头文件的目录(ORACLE_HOME\PRECOMP\PUBLIC),如:D:\Oracle\product\10.1.0\Client_1\precomp\public

       3) 选“Library Files”,在列表中加入proc Lib所在的目录(ORACLE_HOME\PRECOMP\LIB\MSVC),如:D:\Oracle\product\10.1.0\Client_1\precomp\LIB\msvc

 

2、建立一MFC工程

 

3、往工程中加入,Proc的源和头文件,例加:proc.pc、proc.h

 

4、右击 .pc 文件(如proc.pc),选择"settings...",进入到"project settings",然后选择Custom Build页:
    a) 在Commands下写入命令:proc  输入入文件名 oname=输出文件名(如:proc proc.pc oname=proc.cpp) ;

    b) 在Outputs下写入输出文件名(如proc.c)。

 

5、编译工程,它将会自动预编译产生c/c++文件(如proc.cpp)

 

6、修改上一步产生的文件
    a) 把#include "stdafx.h"提到最前面(根据情况决定是否需要添加#include "stdafx.h");
    b) 把extern void sqlcxt (void **, unsigned long *,struct sqlexd *, const struct sqlcxp *);之类的函数的定义用下面的括起

 


         #ifdef  __cplusplus
         extern "C" {
         #endif

           extern void sqlcxt (void **, unsigned long *,struct sqlexd *, const struct sqlcxp *);

           ... ...


         #ifdef  __cplusplus
         }
         #endif

 

6、把lib文件加入工程中:

    project->settings->link-> object/library modules 中加入orasql10.lib(10g版本)

 


7、编译链接产生可执行文件

 

注:重编译整个工程时,别忘了第6步修改产生的文件。

附例程:

//------------------------------------------- pctest.pc ------------------------------------------------

#include <stdio.h>
#include <string.h>

EXEC SQL INCLUDE SQLCA;

int main()

{

EXEC SQL BEGIN DECLARE SECTION;

char user[20],pass[20],tnsname[20];

char enam[20];

int empn;

float sa;

EXEC SQL END DECLARE SECTION;

strcpy(user,"scott");

strcpy(pass,"tiger");

strcpy(tnsname,"oracle");

EXEC SQL CONNECT :user IDENTIFIED BY :pass USING :tnsname;

printf("connecting succesfull...\n");


EXEC SQL DECLARE emp_cur CURSOR FOR

SELECT empno,ename,sal FROM emp;

EXEC SQL OPEN emp_cur;

printf("cursor openning...\n");

while(1)
{
 EXEC SQL WHENEVER NOT FOUND DO break;
 EXEC SQL FETCH emp_cur INTO :empn,enam,sa;
 printf("%d,%s,%f\n",empn,enam,sa);
}


EXEC SQL CLOSE emp_cur;

EXEC SQL COMMIT WORK RELEASE;

return 0;

}

 

//---------------------------------- 编译 pctest.pc 后生成的pctest.c ---------------------------------------

 

 

略。

 

//-------------------------------------- 完 ------------------------------------------------

转载于:https://www.cnblogs.com/meronzhang/archive/2013/01/29/2881820.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值