草木瓜
一、提要
ProC是Oracle数据库提供的开发接口,支持多种语言。ProC虽然调试维护起来十分不便,但是依靠其结构化清楚的嵌入式SQL,也成为了C/C++语言访问控制数据库的常用方式。
本文首先介绍Windows平台下,使用Visual C++ 6.0 和 Visual C++ .Net配置ProC的开发环境。
二、数据库环境
确认安装了组件,Oracle - Application Development - Pro C-C++ 。有时在Oracle自带的组件工具中显示已安装,但在文件菜单和文件夹无相应组件,解决方法就是重装。
三、使用示例文件
sqlmain.c (扩展名是无所谓的)
----------------------------------------------
#include "sqlca.h"
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
//显示意外错误
void sql_error(char *msg)
{
printf("\n%s %s\n", msg,(char *)sqlca.sqlerrm.sqlerrmc);
EXEC SQL ROLLBACK RELEASE;
exit(0);
}
void main() {
EXEC SQL INCLUDE sqlca;
EXEC ORACLE OPTION (RELEASE_CURSOR = YES);
EXEC SQL WHENEVER SQLERROR DO sql_error(" <ERROR> ");
EXEC SQL BEGIN DECLARE SECTION;
VARCHAR oraCN[30];
EXEC SQL END DECLARE SECTION;
strcpy(oraCN.arr,"system/sys@unixdb");
oraCN.len = strlen(oraCN.arr);
oraCN.arr[oraCN.len]='\0';
EXEC SQL CONNECT :oraCN;
printf("\n [OK Connected!] ");
}
使用Pro C-C++编译成C语言文件,成功后会提示绿色的"√":
source.c (文件比较长,不在此列出) 四、Visual C++ 6.0
1.New Project -> Win32 Console Application 即新建一个空控制台项目
2.加入编译后的source.c文件
3.在 Tools -> Options -> Directories 添加ProC的lib目录和include目录。
本机目录使用如下:
Library Files
E:\ORACLE\ORA92\PRECOMP\LIB
Include Files
E:\ORACLE\ORA92\PRECOMP\PUBLIC
4.在 Project -> Settings -> Link 的 Object/Library modules 中添加ProC的链结文件orasql9.lib,VC会在Project Options自动更新。
5.编译运行
输入错误密码提示:
<ERROR> ORA-01017: invalid username/passWord; logon denied
连接成功提示:
[OK Connected!]
五、Visual C++ .Net
1.新建项目 -> Visual C++ -> Win32 -> 控制台 即新建一个空控制台项目
2.加入编译后的source.c文件
3.工具 -> 选项 -> 项目 -> VC++ 目录 添加ProC的lib目录和include目录。
本机目录使用如下:
库文件
E:\ORACLE\ORA92\PRECOMP\LIB
头文件
E:\ORACLE\ORA92\PRECOMP\PUBLIC
4.选中项目 -> 属性 -> 配置属性 -> 链结器 -> 输入 -> 附加依靠项 添加ProC的链结文件orasql9.lib
5.编译运行
输入错误密码提示:
<ERROR> ORA-01017: invalid username/password; logon denied
连接成功提示:
[OK Connected!]
六、总结
本文只是使用了数据库连接的简单例子,具有实际参考意义的例子可参看:
《ProC动态SQL示例(第1,2,3种方法)》
http://blog.csdn.net/liwei_cmg/archive/2006/05/29/759963.ASPx
另外,这方面的教程也很多可以上网搜索一下。在E:\oracle\ora92\precomp\demo\proc也有很多具体实例,十分值得参考,在下文将介绍ProC在Unix/Linux环境下的配置使用。