2019数据库应用开发 嵌入式SQL课件

上传人:我*** 文档编号:145336790 上传时间:2020-09-19 格式:PPT 页数:40 大小:227.50KB
返回 下载 相关 举报
2019数据库应用开发 嵌入式SQL课件_第1页
第1页 / 共40页
2019数据库应用开发 嵌入式SQL课件_第2页
第2页 / 共40页
2019数据库应用开发 嵌入式SQL课件_第3页
第3页 / 共40页
2019数据库应用开发 嵌入式SQL课件_第4页
第4页 / 共40页
2019数据库应用开发 嵌入式SQL课件_第5页
第5页 / 共40页
点击查看更多>>
资源描述

《2019数据库应用开发 嵌入式SQL课件》由会员分享,可在线阅读,更多相关《2019数据库应用开发 嵌入式SQL课件(40页珍藏版)》请在金锄头文库上搜索。

1、1,第十章 数据库应用开发,10.1 嵌入式SQL 10.2 基于OLE DB/ADO的数据库开发方法 10.3 基于JDBC技术的数据库开发方法 10.4 SQLJ及其在数据库开发中的应用,2,10.1 嵌入式SQL,一、嵌入式SQL概述 二、嵌入式SQL的一般形式 三、嵌入式SQL语句和主语言之间的通信 四、不用游标的SQL语句 五、使用游标的SQL语句,3,一、嵌入式SQL概述,使用嵌入式SQL的原因 SQL语言不便于进行事务处理中的流程控制; 普通编程语言在涉及数据库的操作时,不能高效率地进行数据的存取。 将SQL语句嵌入到普通编程语言中使用,很好地结合了编程语言的过程性和SQL语言的

2、数据操纵能力。 嵌入式SQL语言:嵌入到普通编程语言中的SQL语言 宿主语言:嵌入SQL语句的普通编程语言,4,一、嵌入式SQL概述,DBMS处理嵌入式SQL语言有两种方法: 预编译方法 使用较多的方法 扩充编译程序法 使用嵌入式SQL,必须解决下列三个问题 让预编译器识别程序代码中的SQL语句 DBMS和宿主语言程序能够进行数据交换 协调好SQL语句和宿主语句对记录的处理方式,5,二、嵌入式SQL的一般形式,开始标志:EXEC SQL 结束标志:视不同的宿主语言而不同 PL/1和C语言中以“;”作为结束标志 COBOL语言以 END-EXEC作为结束标志 嵌入式SQL的一般形式: 开始标志+

3、SQL语句+结束标志 例:交互SQL:DROP TABLE employee, 嵌入到C语言中的写法是: EXEC SQL DROP TABLE employee;,6,三、嵌入式SQL语句和 主语言之间的通信,数据库和源程序工作单元之间通信主要包括: 向主语言传递SQL语句的执行状态信息,使主语言能够据此控制程序流程; 主语言向SQL语言提供参数; 将SQL语句查询数据库的结果交主语言进一步处理。 采用的通信方式 SQL主语言(SQL执行状态):SQLCA 主语言SQL(输入数据):主变量 SQL主语言(输出数据):主变量+游标,7,三、嵌入式SQL语句和 主语言之间的通信,SQL通信区(S

4、QLCA:SQL Communication Area) 将系统当前的工作状态和运行环境数据反馈给主程序 在应用程序中的定义: EXEC SQL INCLUDE SQLCA; SQLCA.SQLCODE是SQLCA的一个分量,属于整数类型,供DBMS向应用程序报告SQL语句的执行情况。每执行一条SQL语句,返回一个SQLCODE代码。,8,三、嵌入式SQL语句和 主语言之间的通信,SQLCA.SQLCODE代码 SQLCODE0:SQL语句执行成功,无异常出现; SQLCODE为负整数:SQL语句执行失败,具体负值表示错误的类型; SQLCODE为正整数,表示SQL语句已执行,但出现了意外的情

5、况。如当SQLCODE100时表示语句已执行,但无数据可取,如DB中无满足条件的记录。,9,三、嵌入式SQL语句和 主语言之间的通信,主变量(host variable):是在嵌入式SQL中使用的主语言的程序变量,用来在输入和输出数据 主变量声明: EXEC SQL BEGIN DECLARE SECTION; 主变量说明段 EXEC SQL END DECLARE SECTION C语言中主变量声明举例: EXEC SQL BEGIN DECLARE SECTION; int s_no; char s_name30; int s_age; EXEC SQL END DECLARE SECTI

6、ON,10,三、嵌入式SQL语句和 主语言之间的通信,主变量使用 SQL语句引用主变量时,变量名前加“:” 在宿主语言中引用主变量时就无需再加“:” s_no=101; EXEC SQL select SNAME , SAGE into :s_name , :s_age from STUDENT where SNO = :s_no;,11,三、嵌入式SQL语句和 主语言之间的通信,指示变量(Indicator Variable) 也是主变量,用来指示返回给宿主变量的值是否为null 在DML中,在宿主变量和指示变量之间加( : )或关键字indicator。 EXEC SQL BEGIN DE

7、CLARE SECTION int s_no; char s_name30; int s_age; short name_id; shortage_id; EXEC SQL END DECLARE SECTION EXEC SQL select SNAME , SAGE into :s_name : name_id , :s_age: age_id from STUDENT where SNO = :s_no ;,12,三、嵌入式SQL语句和 主语言之间的通信,游标(CURSOR):协调两种不同的数据处理方式 SQL:面向集合,一条SQL原则上可以产生或处理多条记录; 主语言:面向记录,一条语

8、句一次只能处理一个记录 游标是系统为用户开设的一个数据缓冲区,存放SQL语句的执行结果。 若一个SQL语句返回单个元组,则不用游标。 若一个SQL语句返回多个元组,则使用游标,13,四、不用游标的SQL语句,说明性语句; 数据定义语句; 数据控制语句; INSERT语句; 查询结果为单记录的SELECT语句; 对满足条件的当前记录(或记录集),由系统根据用户要求,自动进行修改或删除的UPDATE和DELETE语句。,14,五、使用游标的SQL语句,需要使用游标的语句有: 查询结果为多记录的SELECT语句; 对满足条件的结果集中记录分别进行修改或删除的UPDATE和DELETE语句。,15,五

9、、使用游标的SQL语句,结果为多记录的SELECT语句使用游标的步骤: 说明游标: EXEC SQL DECLARE CURSOR FOR ; 打开游标: EXEC SQL OPEN ; 推进游标指针并取当前记录: EXEC SQL FETCH INTO ; 关闭游标: EXEC SQL CLOSE ,16,五、使用游标的SQL语句,通过游标的更新和删除步骤: 声明游标: EXEC SQL DECLARE CURSOR FOR FOR UPDATE OF ; 打开游标: EXEC SQL OPEN ; 推进游标指针并取当前记录: EXEC SQL FETCH INTO ; 更新或修改记录 EX

10、EC SQL UPDATE SET WHERE CURRENT OF ; EXEC SQL DELETE FROM WHERE CURRENT OF ; 关闭游标: EXEC SQL CLOSE ,17,10.2 基于OLE DB/ADO的数据库开发方法,一、OLE DB 二、ADO与OLE DB 三、ADO应用程序开发,18,一、OLE DB,Microsoft采用OLE技术开发的一种新型的数据库接口程序 在ODBC技术的基础上发展而来,19,1. OLE DB的体系结构,OLE DB主要由三个层次构成: 数据使用者(Data Consumer) 数据服务提供者(Data Service P

11、rovider) 数据提供者(Data Provider),20,2. OLE DB 工作原理,21,二、ADO与OLE DB (1 of 2),22,二、ADO与OLE DB (2 of 2),利用ADO访问数据库的方法与步骤: 连接数据源 创建SQL查询命令对象 激活命令,产生记录集 操作记录集中的记录 更新数据源,23,三、ADO应用程序开发,可以在任何支持COM和自动化特性的语言环境中使用 。 具体应用见附件1。,24,10.3 基于JDBC技术的数据库开发方法,一、JDBC驱动 二、JDBC的接口和类 三、JDBC应用程序开发,25,一、JDBC驱动(1 of 2),26,一、JDB

12、C驱动(2 of 2),JDBC驱动程序有以下4类: JDBC-ODBC桥,将JDBC调用转化为ODBC(Open Database Connectivity)调用的“桥梁”,通过ODBC驱动程序来提供JDBC对数据库的访问。 本机应用编程接口部分Java驱动程序(Native-API Partly-Java Driver),将JDBC调用转换为基于客户端API的调用。 数据库中间件的纯Java驱动程序(Net-Protocol All-Java Driver),将JDBC调用转换成为中间件供应商的协议,然后通过中间件服务器将该协议转换为DBMS协议。 直接连接数据库的纯Java驱动程序(Na

13、tive-Protocol All-Java Driver),将JDBC调用转换为特定数据库直接使用的网络协议,这一类驱动程序通常由数据库厂商自己开发。,27,二、JDBC的接口和类(1 of 8),java.sql包提供了核心的JDBC API,其中含有访问数据库的所有类和接口,这个包与包java.io和java. util以相同的方式形成了Java类库的组成部分。,28,二、JDBC的接口和类(2 of 8), java.sql.DriverManager类 JDBC的管理层,作用于用户和驱动程序之间,用于管理JDBC驱动程序,并在数据库和相应的驱动程序之间建立连接。 方法的声明如下: p

14、ublic static synchronized void Connection getConnection(String url, String user, String password) throws SQLException,29,二、JDBC的接口和类(3 of 8), Statement类接口 Statement接口用于执行一个静态的SQL语句,并得到SQL语句执行后的结果。Statement接口常用的方法为: ResultSet executeQuery(String sql) throws SQLException int executeUpdate(String sql)

15、throws SQLExceptton void close() throws SQLException,30,二、JDBC的接口和类(4 of 8), PreparedStatement类 PreparedStatement对象继承Statement接口,因此也是用来执行SQL语句的,与Statement接口不同的是,包含于PreparedStatement对象中的SQL语句具有一个或多个输入(IN)参数。,31,二、JDBC的接口和类(5 of 8), CallableStatement类 是PreparedStatement类的子类 对象用 ParepareCall方法创建 对象用于执行

16、SQL存储过程,32,二、JDBC的接口和类(6 of 8), ResultSet类 提供从数据库中返回的结果集 使用该类的getXXX方法得到数据库记录集中某个字段的一条记录,33,二、JDBC的接口和类(7 of 8), 其他常用的接口和类 java.sql.SQLException类 java.sql.Driver接口 java.sql.Connection接口 java.sql.Statement接口 java.sql.ResultSet接口,34,二、JDBC的接口和类(8 of 8),35,三、JDBC应用程序开发,1. 连接数据库的步骤 加载驱动程序 建立连接 对数据库进行操作 关闭连接和相应的对象,36,2. 一个编程实例,见附件2,37,10.4 SQLJ及其在数据库开发中的应用,一、SQLJ与JDBC比较 二、SQLJ应用程序开发,38,一、SQLJ与JDBC比较,对于JAVA数据库应用程序调用SQL, DB2提供了2种方

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > PPT模板库 > PPT素材/模板

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