Pro*C/C++具体操作

简介:

Pro*C/C++具体操作

1、helloworld程序(linux版本 c语言)

程序:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include "sqlca.h"
//演示helloworld 
EXEC SQL BEGIN DECLARE SECTION;
char  *pid =  "scott/tiger" ;
EXEC SQL END DECLARE SECTION;
int  main()
{
int   ret  = 0;
EXEC SQL CONNECT :pid ;
if  (sqlca.sqlcode != 0)
{
ret = sqlca.sqlcode;
printf ( "connect err:%d " , ret);
return  ret;
}
printf ( "connect...ok.\n" );
return   ret;
}

  开发流程

1)proc *.pc 预编译,会生成.c文件

proc hello.pc 

2)编译,链接 

gcc -o hello hello.c -I/opt/oracle/product/11.2/db_1/precomp/public \

-L/opt/oracle/product/11.2/db_1/lib -lclntsh

3)执行应用程序

./hello 

2、helloworld程序(linux版本 c++语言)

程序:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#include <iostream>
#include <stdio.h>
#include  <string.h>
#include <stdlib.h>
#include "sqlca.h"
using  namespace  std;
//先定义宿主变量 (SQL变量)
EXEC SQL BEGIN  DECLARE SECTION ;
char  *serverid =  "scott/tiger@orcl" ;
EXEC SQL END  DECLARE SECTION ;
int  main()
{
int      ret = 0;
cout<< "hello...." <<endl;
//printf("hello....\n");
//cout<<"serverid:"<<serverid<<endl;
EXEC SQL connect :serverid;
if  (sqlca.sqlcode != 0)
{
ret = sqlca.sqlcode ;
printf ( "connect err:%d \n" , ret);
return  ret;
}
else
{
printf ( "connect ok\n" );
}
EXEC SQL COMMIT RELEASE;  //提交事务断开连接
return  ret;
}


c++版本编译流程

1)proc *.pc 预编译,会生成.cpp文件

proc INAME=./hello.pc ONAME=hello.cc PARSE=NONE CODE=CPP 

#INCLUDE=/usr/lib/gcc/x86_64-redhat-linux/4.4.4/include

2)编译,链接 

g++ hello.cc -o hello -I${ORACLE_HOME}/precomp/public -L${ORACLE_HOME}/lib -lclntsh 

3)运行

./hello 

3、vs2013操作

程序见上面

开发流程:

1)proc *.pc 预编译,会生成.c文件

用VS2013创建一个空项目,项目名为ProcHello,右键ProcHello项目里面的源文件->添加->新建项,选择txt文档,在项目名填上ProcHello.pc,点击完成,就可以看到源文件夹里面有了一个ProcHello.pc的文件。编写代码,右键ProcHello.pc,选择属性->常规->项类型->自定义生成工具,点击完成之后。再次右键ProcHello.pc,选择属性->自定义生成工具->常规,命令行:proc INAME=$(TargetName).pc PARSE=FULL(对应的是.c文件)

proc INAME=$(TargetName).pc PARSE=NONE CODE=CPP(对应的是.cpp文件),

输出:$(IntDir)$(TargetName).c(对应的是.c文件)

$(IntDir)$(TargetName).cpp(对应的是.cpp文件)。


2)编译,链接   

右键ProcHello.pc文件->编译,如果没有错误,下面会显示生成成功。再次右键源文件->添加->现有项,找到生成的ProcHello.cpp或者(ProcHello.c),这样源文件夹里面就有了两个文件了。右键工程->属性,选择C/C++->常规->附加包含目录,添加C:\software\Oracle11g\product\11.2.0\dbhome_1\precomp\public(orcale的头文件),选择链接器->输入->附加依赖项,添加orasql11.lib;oraxa11.lib;oci.lib;orasqx11.lib;,在选择链接器->常规->附加库目录,添加

C:\software\Oracle11g\product\11.2.0\dbhome_1\precomp\LIB

C:\software\Oracle11g\product\11.2.0\dbhome_1\precomp\LIB\msvc

C:\software\Oracle11g\product\11.2.0\dbhome_1\OCI\lib\MSVC

C:\software\Oracle11g\product\11.2.0\dbhome_1\RDBMS\XA

3)注意,如果是连接64位的数据库,

右键ProcHello.pc文件->配置管理器->活动解决方案平台->新建->键入或选择新的平台->x64



本文转自 corasql 51CTO博客,原文链接:http://blog.51cto.com/corasql/1723485,如需转载请自行联系原作者

相关文章
|
SQL Oracle 关系型数据库
什么是Pro*C/C++,嵌入式SQL,第一个pro*c程序,pro*c++,Makefile,Proc增删改查
 1 什么是Pro*C/C++ 1、通过在过程编程语言C/C++中嵌入SQL语句而开发出的应用程序 2、什么是嵌入式SQL 1、在通用编程语言中使用的SQL称为嵌入式SQL 2、在SQL标准中定义了很多中语言的嵌入式SQL 3、各个厂
1824 0
|
4天前
|
设计模式 安全 算法
【C++入门到精通】特殊类的设计 | 单例模式 [ C++入门 ]
【C++入门到精通】特殊类的设计 | 单例模式 [ C++入门 ]
14 0
|
5天前
|
C语言 C++
【C++】string类(常用接口)
【C++】string类(常用接口)
13 1
|
2天前
|
编译器 C++
【C++】继续学习 string类 吧
首先不得不说的是由于历史原因,string的接口多达130多个,简直冗杂… 所以学习过程中,我们只需要选取常用的,好用的来进行使用即可(有种垃圾堆里翻美食的感觉)
7 1
|
2天前
|
算法 安全 程序员
【C++】STL学习之旅——初识STL,认识string类
现在我正式开始学习STL,这让我期待好久了,一想到不用手撕链表,手搓堆栈,心里非常爽
10 0
|
2天前
|
存储 安全 测试技术
【C++】string学习 — 手搓string类项目
C++ 的 string 类是 C++ 标准库中提供的一个用于处理字符串的类。它在 C++ 的历史中扮演了重要的角色,为字符串处理提供了更加方便、高效的方法。
12 0
【C++】string学习 — 手搓string类项目
|
3天前
|
Java C++ Python
【C++从练气到飞升】06---重识类和对象(二)
【C++从练气到飞升】06---重识类和对象(二)
|
3天前
|
编译器 C++
【C++从练气到飞升】06---重识类和对象(一)
【C++从练气到飞升】06---重识类和对象(一)
|
3天前
|
存储 编译器 C语言
【C++从练气到飞升】02---初识类与对象
【C++从练气到飞升】02---初识类与对象
|
4天前
|
设计模式 算法 编译器
【C++入门到精通】特殊类的设计 |只能在堆 ( 栈 ) 上创建对象的类 |禁止拷贝和继承的类 [ C++入门 ]
【C++入门到精通】特殊类的设计 |只能在堆 ( 栈 ) 上创建对象的类 |禁止拷贝和继承的类 [ C++入门 ]
9 0