C语言采用嵌入式方式操作数据库execsql

上传人:人*** 文档编号:500143086 上传时间:2023-11-14 格式:DOC 页数:8 大小:40KB
返回 下载 相关 举报
C语言采用嵌入式方式操作数据库execsql_第1页
第1页 / 共8页
C语言采用嵌入式方式操作数据库execsql_第2页
第2页 / 共8页
C语言采用嵌入式方式操作数据库execsql_第3页
第3页 / 共8页
C语言采用嵌入式方式操作数据库execsql_第4页
第4页 / 共8页
C语言采用嵌入式方式操作数据库execsql_第5页
第5页 / 共8页
点击查看更多>>
资源描述

《C语言采用嵌入式方式操作数据库execsql》由会员分享,可在线阅读,更多相关《C语言采用嵌入式方式操作数据库execsql(8页珍藏版)》请在金锄头文库上搜索。

1、文档供参考,可复制、编制,期待您的好评与关注! Exec sql/c【嵌入SQL】概念:利用高级语言的过程性结构来弥补SQL语言实现复杂应用方面的不足。嵌入SQL的高级语言称为主语言或宿主语言。 在混合编程中,SQL语句负责操作数据库,高级语言语句负责控制程序流程。预编译方法由DBMS的预处理程序对源程序扫描,识别出SQL语句,把它们转换成主语言调用语句,以使主语言编译器能识别它,最后由主语言编译器将整个源程序编译成目标码。嵌入式SQL的一般形式 所有的嵌入式SQL语句都必须加前缀EXEC SQL 在C语言中: EXEC SQL 例如:EXEC SQL DROP TABLE Student;嵌

2、入式SQL与主语言的通信 1:向主语言传递SQL语句执行状态信息【状态信息】,使语言能够据此信息控制程序流程,用SQL通信区(SQLCA【SQL Communication Area】)实现。 2:主语言向SQL语句提供参数,主要用主变量(Host Variable)实现; 3:将SQL语句查询数据库的结果交主语言进一步处理,主要用主变量和游标(Cursor)实现。SQL通信区 SQLCA中有一个存放每次执行SQL语句后返回代码的变量SQLCODE。 每次执行完SQL语句后都应该测试一下SQLCODE的值,以了解该SQL语句执行情况并做相应处理,如果SQLCODE等于预定的常量SUCCESS,

3、则表示SQL语句成功,否则在SQLCODE中存放错误代码。 SQLCA(SQL Communication Access) 系由系统提供之系统记录架构,作为back end与 front end 之间沟通之用,当发生 I/O 状态时,系统会记录该状态于SQLCA 中,front end 即可依据其其内容得知 I/O 运作是否成功,再决定往后执行的步骤。SQLCA 为系统定义之 GLOBAL变量,以下为其架构并介绍其内容与用途: SQLCA结构DEFINE SQLCA RECORD SQLCODE INTEGER, SQLERRM CHAR(71), SQLERRP CHAR(8), SQLER

4、RD ARRAY6 OF INTEGER, SQLAWARN CHAR(8) END RECORD SQLCODE 表示 I/O 的结果 ;返回值说明0 表示 I/O 成功 100表示 NOTFOUND打开游标-推进游标-关闭游标-释放游标】:/定义游标EXEC SQL DECLARE cur CURSOR FOR select name,sex from student where no like :no; EXEC SQL OPEN cur;/打开游标 for(;) EXEC SQL fetch cur into :name,:sex;/推进游标 if(sqlca.sqlcode=100)

5、/没有满足条件的数据 break; /操作数据 EXEC SQL close cur;/关闭游标 EXEC SQL free cur;/释放游标 使用事务 事务的三个常用操作:开始事务(BEGIN WORK);提交事务(COMMIT WORK);回滚(ROLLBACK WORK); 例如: EXEC SQL BEGIN WORK; /数据库操作 if(sqlca.sqlcode0) EXEC SQL ROLLBACK WORK; elseEXEC SQL COMMIT WORK; CURRENT形式的UPDATE语句和DELETE语句 UPDATE和DELETE语句都是集合操作,如果只想修改或

6、删除其中的某个记录,则需要用带游标的SELECT语句查出所有满足条件记录,从中进一步找出要修改或删除的记录,然后用CURRENT形式的UPDATE和DELETE语句处理。步骤: 1:用DELCARE语句说明游标。如果是为CURRENT形式的UPDATE语句作准备,则SELECT语句中要用 FOR UPDATE OF用来指明查询出的数据在指定列是可修改的。如果是为CURRENT形式的DELETE语句作准备,则不必使用上述子句。 2:检查该记录是否为该修改或删除的记录。如果是,则修改或删除之。这时UPDATE和DELETE语句中要用子句 WHERE CURRENT OF,表示修改或删除的是最近一次

7、取出的记录,即游标指针指向的记录。 例如:更新操作char yn;EXEC SQL BEGIN DELCARE SECTION;/申明主变量char Sno20,Sname20,NEWSname20;EXEC SQL END DECLARE SECTION;/运用游标进行查询记录EXEC SQL DECLARE cur CURSOR FOR SELECT Sno, Sname FROM Student WHERE Sno like 01% FOR UPDATE OF Sname;EXEC SQL OPEN cur;/打开游标while(1) /*用循环结构逐条处理结果集中的记录*/ EXEC

8、SQL FETCH cur INTO :Sno,:Sname; if(sqlca.sqlcode=100) break; /*若查询结果处理完或出现错误,则退出循环*/ printf(no=%s,name=%s,Sno,Sname); printf(UPDATE Name(y/n)?); /*问用户是否需要修改*/ scanf(%c, &yn); if(yn=y or yn=Y) /*需要修改*/ printf(INPUT NEW Name:); scanf(%d,&NEWSname); EXEC SQL UPDATE Student SET Sname = :NEWSname WHERE C

9、URRENT OF cur; ; ;EXEC SQL CLOSE cur;数据类型 1、SQL与C数据类型的对应简单类型 SQLCCHAR(n)char(n+1) CHARCTER(n)char *SMALLINTshortINTERGERintSMALLFLOATfloatFLOAT/DOUBLEdoubleSERIALlong intDATElong intVARCHARstring 2、数据类型转换 转换类型 转换后FLOAT DECIMAL(16)SMALLFLOATDECIMAL(8)INTERGERDECIMAL(10,0)SAMLLINTDECIMAL(5,0)有关CHAR类型的

10、函数 1、以空值结尾的串的操作函数 rdownshift(char *s) 把一个字符串中的所有字母转换成小写形式。 rupshift(char *s) 把一个字符串中的所有字母转换成大写形式。 stcat(char *s, char *dest) 把一个字符串同另一个字符串相连接。 stcmpr(char *s1, char *s2) 比较两个字符串。 stcopy(char *from, char *to) 把一个字符串拷贝到另一个字符串。 stleng(char *string) 统计字符串的长度。 2、定长串的操作函数 bycmpr(char byte1, byte2, rpt len) 比较两组连续的字节内存块。 bycopy(char *from, char *to, int len) 把一块内存的内容拷贝到另一块内存。 byfill(char *to, int len, char ch) 用字符填充指定的内存块。 byleng(char from, int count) 统计有效字符的数目。有效字符是指字符串去除了末尾空格所剩的字符。 3、字符串操作函数 l

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 行业资料 > 国内外标准规范

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号