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 ---------------------------------------
略。
//-------------------------------------- 完 ------------------------------------------------