数据库统一访问_毕业设计.doc_第1页
数据库统一访问_毕业设计.doc_第2页
数据库统一访问_毕业设计.doc_第3页
数据库统一访问_毕业设计.doc_第4页
数据库统一访问_毕业设计.doc_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

数据库统一访问的设计与开发 毕业设计目录一、选题的目的与意义21、研究背景与意义22、任务简介23、系统实现总体目标3二、文献综述41、数据库统一访问总体简介42、数据库统一访问的开发工具简介4三、报告正文6(一)可行性分析报告61、对现有系统的分析62、所设计系统的分析63、投资及效益分析64、技术方面的可行性65、使用方面的可行性66、结论6(二)系统设计71、系统功能列表设计72、系统接口设计94、系统实现设计105、高可靠性设计126、系统性能要求13四、毕业论文(设计)工作计划进度14一、选题的目的与意义1、研究背景与意义。封装不同的数据库底层,提供统一的接口访问。使用者不再受各个数据库中的不同的sql语句制约。使接口更加便于在应用服务器上使用。比如增加数据源的统一配置,数据库连接池,屏蔽数据库连接的创建和使用。比如对存储过程,采用类似JDBC的统一的调用接口,存储过程在各类数据库中存在较大差异,应用层接口屏蔽这类差异(如oracle与sql server存储过程返回结果集的差异)2、任务简介。封装ORACLE,SQL SERVER,SYBASE数据库底层接口工具。分成两层接口,进行封装 oracle 的OCI,sql server 的db_lib 底层基本函数的封装;如:数据库的初始化、SQL语句的处理、结果集的获取等; 应用程序调用接口,该接口统一封装,调用者不需要知道后台数据库类型;动态配置数据库类型:根据配置信息动态获取数据库类型。数据库类型、驱动动态链接库、个性化参数;驱动管理系统:应用程序调用驱动管理系统的相关功能函数,如:初始化:根据配置加载相应共享库,为不同类型的驱动分配生成控制句柄;功能调用:使用控制句柄及在系统中的加载序号,调用相应函数数组中的函数;对于驱动的共享库,函数声明都一样,所以在加载后,各函数存放到相应的函数指针数组。对于控制句柄,各种驱动内容不一样,由其在共享库里强制转换 。1. 数据库访问与平台无关(win/linux/solars),与数据库系统无关(sql server,oracle,Sybase,db2);2. 支持标准SQL访问;3. 支持统一的存储过程调用;4. 支持单结果集操作;5. 支持同时连接不同类数据库;6. 支持连接池3、系统实现总体目标封装数据库底层方法,实现类似BDE、ADO 的功能二、文献综述1、数据库统一访问总体简介。在总体上分为二层接口进行封装:l 统一驱动接口(类似odbc接口) 封装数据库差异l 应用层接口(类似j2ee中对数据库的访问接口) 使接口更加便于调用者使用,比如增加数据源的统一配置,数据库连接池,屏蔽数据库连接的创建和使用2、数据库统一访问的开发工具简介 C语言介绍:C语言是目前世界上流行、使用最广泛的高级程序设计语言。对操作系统和系统使用程序以及需要对硬件进行操作的场合,用C语言明显优于其它高级语言,许多大型应用软件都是用C语言编写的。C语言具有绘图能力强,可移植性,并具备很强的数据处理能力,因此适于编写系统软件,三维,二维图形和动画它是数值计算的高级语言。 SQL SERVER 2000 数据库 SQL Server 2000 是Microsoft 公司推出的SQL Server 数据库管理系统的最新版本该版本继承了SQL Server 7.0 版本的优点同时又比它增加了许多更先进的功能具有使用方便可伸缩性好与相关软件集成程度高等优点可跨越从运行Microsoft Windows 98 的膝上型电脑到运行Microsoft Windows 2000 的大型多处理器的服务器等多种平台使用。 SYBASE SQL SERVER 11 数据库SYBASE SQL SERVER 11 是SYBASE 公司开发的一个关系型数据库系统。其通能强大,性能好。可以在很多个平台上运行。 ORACLE 9i 数据库ORACLE 9i 是ORACLE 公司开发的一个数据库系统。其功能强大,是当今最流行、性能最好的关系型数据库系统之一。其核心开发工具SQL * Plus、Oracle Developer(包括Oracle Forms、Oracle Reports和Oracle Graphics)、Oracle Designer和SQL* Loader。其核心数据库的特点,着重于数据仓库、ORACLE在Web方面的创新、朝面向对象数据库的转变。 Microsoft Visual C+ 6.0 Microsoft Visual C+ 6.0 是微软公司开发的综合性最高、最强大、也是最复杂的软件开发工具之一,它提供编程能力和各式各样的工具。包含了支持Windows95、Windows NT 4.0 以及Windows 98 的Win32 SDK文档。其技术特点:可视化编程和支持面向对象的变成技术。提供了一系列可视化变成的工具,如AppWizard 和 ClassWizard等。他们使Windows 变成更为直观。其支持的面向对象的编程技术包装了Windows内在的复杂的运行机制,使Windows编程更为简单易学。此外,Microsoft Visual C+ 6.0还具有其他技术特点:如通过ActiveX技术,支持Internet编程:支持ODBC数据库编程等。三、报告正文(一)可行性分析报告1、对现有系统的分析现有的BDE、ADO工具虽然操作方便,但是这些工具不能跨平台操作,性能不是很高。2、所设计系统的分析 实现现有的BDE、ADO对数据库的大部分操作方法,能跨平台操作(支持windows/linux/hp-unix),由于BDE、ADO工具封装了数据库(SQL SERVER, SYBASE, ORALCE, DB2等)对数据底层的操作方法,而且封装过于复杂,影响性能。3、投资及效益分析由于统一数据库访问系统是一个工具系统,封装数据库之间的差异。使接口更加便于调用者使用,比如增加数据源的统一配置,数据库连接池,屏蔽数据库连接的创建和使用。开发成功了,在该系统上开发数据库应用系统可以大大缩小开发时间,特别是开发跨平台、跨数据库的应用系统,可以提高开发效率;也可提高数据库访问的性能;从而节约开发成本。4、技术方面的可行性由于每个数据库厂商都提供了访问数据库的接口(如MS SQL SERVER的 CT-LIB,ORACLE 的OCI,SYBASE 的 DB-LIB/CT-LIB,IBM 的DB2的 CLI等),我们可以采用C/C+技术来封装这些访问数据库底层的接口,再在此封装的基础上提供统一的接口,用户只要调用这个统一的接口就可以操作各个数据库。5、使用方面的可行性 封装好的统一数据库访问系统,操作简单、方便。用户操作不同的数据库根据配置信息来确定,调用统一访问接口进行操作。如同调用BDE、ADO的操作接口一样。6、结论 鉴于以上分析,该系统可以立即开始设计、实施。(二)系统设计1、系统系统功能列表设计 功能名称功能编号简要说明加载数据库驱动组件90001根据统一数据库访问模块配置信息,加载各数据库驱动组件.释放指定的数据库驱动句柄90002根据获得的驱动句柄,将其释放.初始化数据源900900在模块启动时,根据配置信息初始化数据源,创建连接池。这里被初始化的数据源是在配置信息中有初始化需求标志的.释放指定数据源90004根据逻辑名,释放数据源初始化数据库连接90005根据数据库类型获得该数据库的驱动函数句柄获得指定数据库驱动函数句柄90006根据数据源逻辑名,获得数据源句柄被动初始化特定数据源90007有一部分数据源,没有在模块启动时被初始化.而是在真正需要它时,有组件发起对特定数据源进行初始化.这个功能就负责这件事.连接池中最大连接数控制90008对某个数据源能创建最大连接数进行限制. 非长期占用连接的占用超时控制90009当所有连接都处于忙的状态时,要对非长期占用连接进行超时检查,并做清理工作动态增加某数据源的连接90010动态增加某数据源的连接动态削减某数据源的连接90011动态削减某数据源的连接获得数据源90012根据数据源逻辑名,向调用者提供数据源(连接池)获得非长期占用连接90013向调用者提供空闲连接.调用者对此连接的使用是有时间限制的.到期不归还,将自动被强制收回.占用时间在系统配置信息中配置.获得长期占用连接90014向调用者提供空闲连接.该连接可以不限时使用.只有管理者可以强行收回.归还连接90015当连接使用完毕时,主动归还连接.获得sql语句执行句柄90016利用连接句柄创建一个sql语句执行的句柄.执行无结果集返回的sql语句90017这个sql 语句不可以有结果集返回.例如不能是select语句.可以update,insert语句.执行有结果集返回的sql语句90018调用者可获得一个向指定数据源发送select语句的句柄.空记录也算是有结果集的.获得存储过程执行句柄90019获得执行存储过程的句柄存储过程执行准备90020做调用存储过程前的准备工作.注册调用的目标存储过程.这里要区分是否有结果集返回.存储过程输入参数注册90021按参数的类型注册输入参数存储过程输出参数绑定90022绑定输出参数.存储过程执行90023执行存储过程.获得结果集元数据90024通过此句柄可获得结果集描述数据.比如字段数,字段类型,字段精度处理结果集90025处理得到的结果集数据动态创建数据库连接90026根据需要,动态创建连接主动断开连接90027断开某连接主动重连数据库90028发现有断开的连接主动重连.查询数据源的配置信息90029查询数据库统一访问系统的配置信息.查询数据源中连接的使用情况90030查询连接是空闲还是忙; 如果是忙: 是长期占用,还是非长期占用;如果是非长期占用,被占用了多少时间.如果是长期占用,是被谁占用的.强制收回某被占用的连接90031在管理接口中可强制收回正在被占用的连接.强制占用空闲连接90032强制使空闲连接为忙.Oracle驱动90033按数据库驱动统一接口,封装oci9库Mssql驱动90034按数据库驱动统一接口,封装ct-lib库Sybase驱动90035按数据库驱动统一接口,封装db-lib及ct-lib库DB2驱动90036按数据库驱动统一接口,封装cli库2、系统接口设计 数据库接口封装形式 每种数据库的客户端库,被封装成统一的C函数据接口。该接口在window下为dll形式,在linux,unix下为共享库形式。在实现使用中这些动态库/共享库被应用根据配置文件动态加载。应用层接口及其实现与平台及数据库均无关。 数据库底层接口的封装设计1) 数据库驱动接口库信息判断数据库类型,获取数据库驱动接口信息。2) 数据库接口库初始化数据库接口库的初始化,分配内部空间。3) 创建数据库连接句柄4) 释放数据库连接句柄5) 连接数据库6) 断开数据库连接7) 创建语句句柄8) 释放语句句柄9) 准备SQL语句10) 执行sql语句11) 结果集操作12) 存储过程的准备13) 执行存储过程14) 获得存储过程return 值 和输出参数 应用程序调用接口的封装设计1) 数据源管理接口类 根据数据源逻辑名,查找应用服务器中的有效数据源(连接池);2) 数据库连接对象类 从连接池中获取一个空闲的数据库连接。3) SQL语句对象类 调用标准sql语句。4) 存储过程对象类 调用存储过程。5) 结果集对象类 操作结果集。6) 字段属性对象类 获取结果集字段属性。4、系统实现设计 数据库底层接口封装的实现1) 初始化函数名描述SQLGetInfo() 获取当前接口库信息 (数据库类型,接口版本)SQLInit()数据库接口库初始化SQLDataSources 获取客户端已配置的数据源(数据库别名)SQLAllocHandle用于分配各类句柄:环境句柄、连接句柄、语句句柄、描述符句柄SQLConnect() 根据给定的数据源名、数据库用户名、口令,建立一个数据库连接(使用一个连接句柄).2) 句柄设置函数名描述SQLSetEnvAttr() 设置环境句柄属性SQLGetEnvAttr() 获取环境句柄属性 SQLSetConnectAttr() 设置连接句柄属性 SQLGetConnectAttr() 获取连接句柄属性SQLSetStmtAttr() 设置语句句柄属性SQLGetStmtAttr() 获取语句句柄属性3) SQL准备函数名描述SQLPrepare() 预备SQL语句SQLBindParameter() 绑定参数SQLRpcPrepare () 调用存储过程的准备4) SQL 执行函数名描述SQLExecute() 执行准备好的sql语句SQLOpen () 执行准备好的select 语句 5) 结果集操作函数名描述SQLRowCount() 返还记录数. SQLNumResultCols() 返回结果集字段数SQLDescribeCol() 返回绑定列. SQLColAttribute() 返回指定字段的字段属性SQLResult () 打开结果集,取出第一条记录 SQLColName () 取结果集字段名. SQLBindCol() 绑定列字段. SQLFetch() 结果集中返回一行。SQLColType () 取结果集字段数据类型SQLColLen () 取结果集字段长度 SQLColPrecision () 取字段精度 SQLCancels () 取消当前执行的操作 SQLColScale () 取字段小数位数 SQLColIsNull () 取字段取值是否可以为NULL. SQLNext () 取一条记录,字段值被输出到绑定的缓存区. SQLDbretdata () 在有结果集的情况下获得存储过程return值 和输出参数. SQLCount () 取当前语句影响的记录条数. 6) 结束函数名描述SQLFreeStmt() 释放语句句柄SQLCancel() 取消sql操作 SQLTransact() 提交或回滚事务 SQLDisconnect() 关闭数据库连接 SQLFreeConnect() 释放连接句柄SQLFreeEnv() 释放环境句柄7) 取数据库元数据函数名描述SQLTables() 获取用户表名SQLColumns() 获取指定表的字段名列表SQLPrimaryKeys() 获取指定表的主键SQLProcedures() 获取存储过程列表SQLProcedureColumns() 获取指定存储过程参数5、高可靠性设计 数据库统一访问的可靠性设计由于数据库统一访问系统封装了数据库底层方法,一旦没有封装好,所造成的损失难以估量,可能导致应用系统无法执行。因此,必须保证本系统具有相当高的可靠性。以下从封装的正确性、

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论