Chinaunix首页 | 论坛 | 博客
  • 博客访问: 881711
  • 博文数量: 146
  • 博客积分: 6619
  • 博客等级: 准将
  • 技术积分: 1621
  • 用 户 组: 普通用户
  • 注册时间: 2008-02-29 14:06
文章分类

全部博文(146)

文章存档

2020年(1)

2019年(4)

2018年(3)

2017年(5)

2015年(5)

2014年(7)

2013年(5)

2012年(11)

2011年(15)

2010年(13)

2009年(14)

2008年(63)

分类: Oracle

2011-03-17 20:06:05

一、提要

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.编译运行
阅读(1273) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~