以下几篇对数据库的访问技术,做一个完整的梳理,已备后来需要时查阅。
一、嵌入式SQL的处理过程
将书写的SQL语句嵌入到主语言中,主语言一般如c、c++、java等。对于这种嵌入式语言(ESQL),RDBMS的处理方式是采用预编译的方式,RDBMS的预处理程序对主程序的代码进行扫描,识别出其中的SQL语句,把它们转换成主语言调用语句,以使主语言调用语句的编译程序能够识别他们,然后主语言程序将纯主语言程序编译成目标代码
二、存储过程
存储过程是由PL/SQL语句书写的过程,这个过程经编译和优化后存储在数据库服务器中,因此称它们为存储过程,使用时只需要调用即可。
存储过程的优点:
1)、由于存储过程不像解释执行的SQL语句那样只在提出操作请求时才进行语法分析和优化工作,因而运行效率高,它提供了在服务器端快速执行SQL语句的有效途径。
2)、存储过程降低了客户机与服务器之间的通信量。客户机上的应用程序只要通过网络向服务器发出存储过程的名字和参数,就可以让RDBMS执行多条语句,并执行数据处理。只有最终结果才返回客户端。
3)、方便实施企业规则。可以把企业规则的运算程序写成存储过程放入数据库服务器中,由RDBMS管理,既有预计总控制又有利于维护。当用户规则发生变化时只要修改存储过程,无需修改其他应用程序。
三、下面记述对异构数据库的访问技术
数据库的种类有很多所以导致在一个数据库上边写的程序很难在应用到其他的数据库上,这给编程带来了很大的不变,因此由此便开发出异构数据库访问的技术。
ODBC是微软开发开放服务体系(WOSA)中有关数据库的一个组成部分,他建立了一组规范,并提供了一组访问数据库的标准API,作为规范的他有两方面的功效和约束力:一方面是规范应用开发,另一方面规范RDBMS应用接口。
主要讲述以下ODBC的工作原理,其他的异构数据库访问技术跟他大致相仿,所以只讲使用方法。
其中ODBC的核心部分包括,应用程序接口的API,驱动程序管理器,各数据库驱动程序。
应用程序:应用程序通过调用应用程序接口的API,调用标准的ODBC函数和SQL语句,实现与数据库的交互。
驱动程序管理器:驱动程序管理器管理各种驱动程序,它包含在ODBC32.dll文件中,对用户来说是透明的,主要功能是装载ODBC驱动程序、驱动和连接正确的驱动程序、管理数据源,检查连接ODBC的参数的合法性及记录ODBC函数的调用等,当应用层需要时返回驱动程序信息。
驱动程序:能够访问异构数据库的关键就是数据库驱动程序,有他提供了应用程序和数据库的独立性。当前的驱动程序主要分单束和多束。单束一般指数据源和应用程序在同一台机器上,驱动和程序直接完成对数据文件的IO操作,这时驱动程序相当于数据管理器。多束驱动程序支持客户/服务器模式,客户机/应用服务器/数据库服务器模式,这是驱动程序完成数据库的请求的提交和结果集接收,应用程序使用驱动程序提供的结果集管理接口操纵执行后的结果数据。
数据源管理:数据源包含有数据库位置数据库类型 等信息,实际上是数据连接的一种抽象。ODBC给每位被访问的数据元指定唯一的数据源名DSN,并映射到所有的底层软件,在连接中的用数据源名来代表用户名,服务器名,所连接的数据库名等。最终用户无需知道数据源的存在。
下面讲述ODBC的AIP:
配上的应用程序句柄之间的关系图:
解析关系图,
每个应用程序创建之后会生成一个ODBC实例,即一个环境句柄,对应于驱动程序管理器。每个ODBC中实例中对应有多个连接句柄,连接句柄就对应于驱动程序,语句句柄是指那些数据库操作的SQL语句,以及产生的结果集和相关信息。描述符句柄主要描述SQL语句的参数、结果集列的元数据集合。这里的数据源有必要提一下,数据源就是那些数据库,及数据库管理程序,同时,RDBMS就是充当数据库服务器的角色的。我们所说的连接数据库服务器就是指的DBMS。