proc/c++(一) 快速上手
来源:互联网 发布:淘宝我的回答能删除么 编辑:程序博客网 时间:2024/05/17 05:59
一、概念:
pro程序:通过在过程化编程语言中 嵌入sql语句开发出的应用程序叫pro程序。
宿主语言:sql语句所嵌入的语言。proc proc++目的:使c 或者 c++ 这种高效的语言成为访问oracle数据
的工具。
二、例子
a 连接数据库
方式一:exec sql connect:用户名 identified by 密码;方式二:exec sql connect:用户名/密码;
b 查询数据
exec sql select 字段 into 变量 from 表
where 条件;
c 断开数据库连接
exec sql commit work release;
linux上写一个proc程序的步骤
1.编写源代码
vi ***.pc
2.预编译 把pc文件变成c文件
proc ***.pc
3.编译 链接
gcc ***.c -lclntsh
gcc ***.c -lorasql10 (windows)
4.执行
./a.out
一个例子
#include <stdio.h>#include <stdlib.h>#include <string.h>#include "util.h"#include <sqlca.h>EXEC SQL INCLUDE SQLCA; (1)int main(){ EXEC SQL BEGIN DECLARE SECTION;// (2) char firstname[13]; char userid[9]="open123"; char passwd[19]="open"; EXEC SQL END DECLARE SECTION; EXEC SQL CONNECT:userid identify by passwd; //(3) EXEC SQL SELECT FIRSTNME INTO :firstname // (4) FROM employee WHERE LASTNAME = 'JOHNSON'; //(4) printf( "First name = %s\n", firstname ); EXEC SQL CONNECT RESET; //(5) return 0;}
上面是一个简单的静态嵌入SQL语句的应用程序。它包括了嵌入SQL的主要部分:
(1)中的include SQLCA语句定义并描述了SQLCA的结构。SQLCA用于应用程序和数据库之间的通讯,其中的SQLCODE返回SQL语句执行后的结果状态。
(2)在BEGIN DECLARE SECTION和END DECLARE SECTION之间定义了宿主变量。宿主变量可被SQL语句引用,也可以被C语言语句引用。它用于将程序中的数据通过SQL语句传给数据库管理器,或从数据库管理器接收查询的结果。在SQL语句中,主变量前均有“:”标志以示区别。
(3)在每次访问数据库之前必须做CONNECT操作,以连接到某一个数据库上。这时,应该保证数据库实例已经启动。
(4)是一条选择语句。它将表employee中的LASTNAME为“JOHNSON”的行数据的FIRSTNAME查出,并将它放在firstname变量中。该语句返回一个结果。可以通过游标返回多个结果。当然,也可以包含update、insert和delete语句。
(5)最后断开数据库的连接。
从上例看出,每条嵌入式SQL语句都用EXEC SQL开始,表明它是一条SQL语句。这也是告诉预编译器在EXEC SQL和“;”之间是嵌入SQL语句。如果一条嵌入式SQL语句占用多行,在C程序中可以用续行符“\”
和c++相关的
oname 默认生成是.c文件 如果改成c++的需要制定成.cpp
iname 输入文件名 可以省略
parse 解析方式 默认是full c的方式. c++ 推荐的方式:none 严格的c++解析:partia ( 不推荐使用)
code 默认是ansi_c . c++ 使用 cpp
proc++ 例子
#include <iostream>using namespace std;exec sql include sqlca;int main(){exec sql begin declare section; char userpasswd[30]="openlab/open123";char var_name[30];exec sql end declare section;/* 连接数据库 */exec sql connect:userpasswd; /* 查询s_emp表中的 first_name id=1 */exec sql select first_name into :var_name from s_emp where id=1;cout<<"var_name="<<var_name<<endl;exec sql commit work release;}预编译:
proc iname=second.pc oname=second.cpp
parse=none code=cpp编译:g++ second.cpp -lclntsh
执行:
./a.out
注意:
.c++ 要求把所有的在sql中使用的变量 放入申明区
c语言 在linux 和unix 下不用把在sql中使用的变量放入申明区。c++ 无论在哪个系统下都需要把这些变量
放入申明区。
exec sql begin declare section;
/* 这就是申明区 */
exec sql end declare section;
三 宿主变量
既能在sql语句中使用,又能在宿主语言中使用.
1.宿主变量的类型char
char var[n] 定长字符串
short
int
long
float
double
varchar var[n] 变长字符串
a.变长字符串的使用
varchar var_name[n]={0};
在sql语句中 和定长字符串没有区别
exec sql select first_name into :var_name
from s_emp where id=1;
在c中访问数据需要使用 .arr
printf("var_name=%s\n",var_name.arr);
可以得到放入变长字符 数据的长度
var_name.len
在数据的之后 设置一个\0
var_name.arr[var_name.len]='\0';
b.处理变长字符串的方式2
使用 char_map=charz 定长处理 空格补齐 \0结尾
=charf|varchar2 定长 空格补齐
=string 变长 \0结尾
eg: proc charn.pc char_map=string //这样就可以将charn.pc程序中的所有定长字符串变成 变长字符串了。
2.宿主变量的注意事项
1.强烈推荐把宿主变量放入申明区
exec sql begin declare section;
exec sql end declare section;
2.宿主变量可以使用指针 不推荐使用
3.DDL中不能使用宿主变量
4.在sql中使用宿主变量时 推荐加上冒号
exec sql select first_name into :var_name
where id=:id;
- proc/c++(一) 快速上手
- 快速上手Maven(一)
- Pro*C快速上手
- Objective-C快速上手
- 《C和指针》学习笔记一/快速上手/
- Python快速上手(一)
- Django 快速上手(一)
- SVN快速上手(一)安装
- DirectX9 3D 快速上手(一)
- 如何快速上手一门编程语言
- ExtAspNet控件库快速上手(一)
- F# 20分钟快速上手(一)
- Mongodb一之快速上手部署
- 快速上手RaphaelJS--RaphaelJS_Starter翻译(一)
- Bootstrap快速上手(一)----右键菜单
- UnityShader快速上手指南(一)
- AngularJS2.0教程(一)快速上手
- AngularJS2.0教程(一)快速上手
- 第五章--对连接应用样式
- oracle view视图update
- HttpClient_4 用法 由HttpClient_3 升级到 HttpClient_4 必看
- 第六章--列表导航条
- 搭建LAMP环境(源码方式)
- proc/c++(一) 快速上手
- hdu4289 Control (ISAP算法)
- Android代码中使用Ping命令
- 守护进程创建步骤
- Flex+BlazeDs+Java的教程及Demo
- Coursera数学思维导论之学生互评打分标准
- 常用命令备忘录
- 第七章--表单和数据表格
- Handler介绍