Linux下C语言结合数据库编程

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

一、.........................................................................3ESQL/C资料1.1...................3第一节什么是嵌入SQL语言?1.1.1............................3嵌入SQL程序的组成元素1.1.2..........................5什么是静态SQL和动态SQL?1.1.3....................................5什么是SQLCA?1.1.4.....................................5什么是SQLDA?1.2........5第二节SYBASESQLServer嵌入式SQL语言1.2.1........................5一个嵌入SQL语言的简单例子1.2.2................................7嵌入SQL的处理过程1.2.3..................................7嵌入SQL语句总览1.2.4.....................................20动态SQL语句1.2.5....................................30两个例子程序1.3..................42第三节IBMDB2嵌入SQL语言1.3.1....................................42一个简单示例1.3.2.....................................45嵌入SQL语句1.3.3........................57DB2的嵌入SQL程序处理过程1.3.4............................62DB2的动态SQL嵌入语句1.4............82第四节ORACLE数据库的嵌入SQL语言1.4.1...................................82基本的SQL语句1.4.2......................................87嵌入PL/SQL1.4.3.....................................88动态SQL语句1.5..............107第五节INFORMIX的嵌入SQL/C语言1.5.1.............................107一个简单的入门例子1.5.2.......................................109宿主变量1.5.3..............................114嵌入SQL的处理过程1.5.4....................................115动态SQL语言1.6..127第六节MicrosoftSQLServer7嵌入式SQL语言1.6.1......................127一个嵌入SQL语言的简单例子1.6.2..............................128嵌入SQL的处理过程1.6.3....................................132嵌入SQL语句1.6.4....................................140动态SQL语句1.6.5.............................................151API二、.........................................................152ESQL编程使用说明2.1............................152第一章ESQL介绍2.1.1................................153ESQL中的基本概念2.1.2............................153ESQL程序的组成和运行2.2.................154第二章ESQL程序的基本结构2.2.1.......................................154程序首部122.2.2.........................................155程序体2.3...............................159第三章查询2.3.1.....................................159SELECT语句2.3.2.....................................161游标的使用2.3.3.............................163定位修改和删除语句2.4.......................166第四章提交/回滚事务2.4.1...................................166逻辑工作单元2.4.2.....................................167COMMIT语句2.4.3...................................167ROLLBACK语句2.4.4.................................167DISCONNECT语句2.5......................167第五章错误检测和恢复2.5.1....................................168USERCA的结构2.6..........................169第六章使用说明书2.6.1...................................169启动Cobase:2.6.2....................................169退出Cobase:2.6.3...............170交互式SQL(InteractiveSQL)访问2.6.4...............170嵌入式SQL(EnbededSQL)编程方式2.6.5.......................................171补充说明一、ESQL/C资料1.1第一节什么是嵌入SQL语言?SQL是一种双重式语言,它既是一种用于查询和更新的交互式数据库语言,又是一种应用程序进行数据库访问时所采取的编程式数据库语言。SQL语言在这两种方式中的大部分语法是相同的。在编写访问数据库的程序时,必须从普通的编程语言开始(如C语言),再把SQL加入到程序中。所以,嵌入式SQL语言就是将SQL语句直接嵌入到程序的源代码中,与其他程序设计语言语句混合。专用的SQL预编译程序将嵌入的SQL语句转换为能被程序设计语言(如C语言)的编译器识别的函数调用。然后,C编译器编译源代码为可执行程序。各个数据库厂商都采用嵌入SQL语言,并且都符合ANSI/ISO的标准。所以,如果采用合适的嵌入SQL语言,那么可以使得你的程序能够在各个数据库平台上执行(即:源程序不用做修改,只需要用相应数据库产品的预编译器编译即可)。当然,每个数据库厂商又扩展了ANSI/ISO的标准,提供了一些附加的功能。这样,也使得每个数据库产品在嵌入SQL方面有一些区别。本章的目标是,对所有的数据库产品的嵌入SQL做一个简单、实用的介绍。当然,嵌入SQL语句完成的功能也可以通过应用程序接口(API)实现。通过API的调用,可以将SQL语句传递到DBMS,并用API调用返回查询结果。这个方法不需要专用的预编译程序。1.1.1嵌入SQL程序的组成元素我们以IBM的DB2嵌入SQL为例,来看看嵌入SQL语句的组成元素。例1、连接到SAMPLE数据库,查询LASTNAME为JOHNSON的FIRSTNAME信息。3#includestdio.h#includestdlib.h#includestring.h#includeutil.h#includesqlca.hEXECSQLINCLUDESQLCA;(1)main(){EXECSQLBEGINDECLARESECTION;(2)charfirstname[13];charuserid[9];charpasswd[19];EXECSQLENDDECLARESECTION;EXECSQLCONNECTTOsample;(3)EXECSQLSELECTFIRSTNMEINTO:firstname(4)FROMemployeeWHERELASTNAME='JOHNSON';(4)printf(Firstname=%s\n,firstname);EXECSQLCONNECTRESET;(5)return0;}上面是一个简单的静态嵌入SQL语句的应用程序。它包括了嵌入SQL的主要部分:(1)中的includeSQLCA语句定义并描述了SQLCA的结构。SQLCA用于应用程序和数据库之间的通讯,其中的SQLCODE返回SQL语句执行后的结果状态。(2)在BEGINDECLARESECTION和ENDDECLARESECTION之间定义了宿主变量。宿主变量可被SQL语句引用,也可以被C语言语句引用。它用于将程序中的数据通过SQL语句传给数据库管理器,或从数据库管理器接收查询的结果。在SQL语句中,主变量前均有“:”标志以示区别。(3)在每次访问数据库之前必须做CONNECT操作,以连接到某一个数据库上。这时,应该保证数据库实例已经启动。(4)是一条选择语句。它将表employee中的LASTNAME为“JOHNSON”的行数据的FIRSTNAME查出,并将它放在firstname变量中。该语句返回一个结果。可以通过游标返回多个结果。当然,也可以包含update、insert和delete语句。(5)昀后断开数据库的连接。从上例看出,每条嵌入式SQL语句都用EXECSQL开始,表明它是一条SQL语句。这也是告诉预编译器在EXECSQL和“;”之间是嵌入SQL语句。如果一条嵌入式SQL语句占用多行,在C程序中可以用续行符“\”。41.1.2什么是静态SQL和动态SQL?嵌入SQL语言,分为静态SQL语言和动态语言两类。静态SQL语言,就是在编译时已经确定了引用的表和列。宿主变量不改变表和列信息。可以使用主变量改变查询参数值,但是不能用主变量代替表名或列名。动态SQL语言就是:不在编译时确定SQL的表和列,而是让程序在运行时提供,并将SQL语句文本传给DBMS执行。静态SQL语句在编译时已经生成执行计划。而动态SQL语句,只有在执行时才产生执行计划。动态SQL语句首先执行PREPARE语句要求DBMS分析、确认和优化语句,并为其生成执行计划。DBMS还设置SQLCODE以表明语句中发现的错误。当程序执行完“PREPARE”语句后,就可以用EXECUTE语句执行执行计划,并设置SQLCODE,以表明完成状态。1.1.3什么是SQLCA?应用程序执行时,每执行一条SQL语句,就返回一个状态符和一些附加信息。这些信息反映了SQL语句的执行情况,它有助于用户分析应用程序的错误所在。这些信息都存放在sqlca.h的sqlca结构中。如果一个源文件中包含SQL语句,则必须要在源程序中定义一个SQLCA结构,而且名为SQLCA。昀简单的定义方法是在源文件中加入一些语句:EXECSQLINCLUDEsqlca.h。每个数据库产品都提供了SQLCA结构。1.1.4什么是SQLDA?我们知道,动态SQL语句在编译时可能不知道有多少列信息。在嵌入SQL语句中,这些不确定的数据是通过SQLDA完成的。SQLDA的结构非常灵活,在该结构的固定部分,指明了多少列等

1 / 172
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功