基于嵌入式SQL技术数据检索功能的实现本科 毕业论文

上传人:1888****888 文档编号:37852250 上传时间:2021-11-04 格式:DOC 页数:31 大小:656.42KB
收藏 版权申诉 举报 下载
基于嵌入式SQL技术数据检索功能的实现本科 毕业论文_第1页
第1页 / 共31页
基于嵌入式SQL技术数据检索功能的实现本科 毕业论文_第2页
第2页 / 共31页
基于嵌入式SQL技术数据检索功能的实现本科 毕业论文_第3页
第3页 / 共31页
资源描述:

《基于嵌入式SQL技术数据检索功能的实现本科 毕业论文》由会员分享,可在线阅读,更多相关《基于嵌入式SQL技术数据检索功能的实现本科 毕业论文(31页珍藏版)》请在装配图网上搜索。

1、本科毕业论文(设计)论 文 题 目基于嵌入式 SQL 技术数据检索功能的实现 姓名(学号) 系 别 信息工程学院 专 业 计算机科学与技术 导 师 姓 名 二 一一年 六 月本科毕业论文(设计)基于嵌入式基于嵌入式 SQLSQL 技术数据检索功能的实现技术数据检索功能的实现 摘要摘要:SQL 是面向集合的描述性语言,具有功能强、效率高、使用灵活等特点,而单纯的SQL 语言是一种独立的、非过程性语言,很难实现具有过程性控制的完整应用系统。嵌入式 SQL 语言就是将 SQL 语句直接嵌入到程序的源代码中,与其他高级程序设计语言相结合,使 SQL 语句负责控制数据库,高级语言负责控制程序流程,从而实

2、现各种复杂应用的处理。 本文在基于 SQL 技术的基础上,介绍了嵌入式 SQL 技术的发展、嵌入式 SQL语言以及嵌入式 SQL 工作原理及流程,以 JAVA 作为宿主语言,以 “图书馆管理系统”的设计为例,描述了嵌入式 SQL 技术的具体应用,重点设计并实现了数据的检索功能。 关键词:关键词: 嵌入式 SQL;宿主语言;JAVA ;JDBC The Implementation of Data Retrieval Based on Embedded SQL TechnologyAbstract: SQL is a descriptive language which facing the s

3、et, it has strong function, high efficiency, agile using and so on. While pure SQL language is independent and not the process of language, it hard to achieve application systems which with process sexual control, Embedded SQL language embedded the SQL statement to program source code directly, then

4、 combined other high-level programming language, Making the SQL statement responsible for controlling the database and Senior language is responsible for control processes, So as to realize the processing various complex applications. In this paper, on the basis of SQL technology, Introduced the dev

5、elopment of embedded SQL technology, embedded SQL language and embedded SQL working principle and process, As the host language in JAVA, With library management system the design as an example, Describes the application of the embedded SQL technology, key design and realized data retrieval functions

6、. KeyKey words:words: Embedded SQL ; Host Language ; JAVA ;JDBC本科毕业论文(设计)目目 录录1 绪论.11.1课题背景.11.2国内外的发展及现状.11.3 课题研究的主要内容.22 嵌入式 SQL 技术 .22.1 SQL 和嵌入式 SQL 简介.22.2 SQL 语句.32.2.1 基本 SQL 语句 .32.2.2 复杂 SQL 语句 .42.3 嵌入式 SQL 语句.62.4 嵌入式 SQL 工作原理及流程 .62.5 嵌入式 SQL 应用 .72.5.1 宿主语言 JAVA 简介 .72.5.2 宿主语言 JAVA DB

7、 引擎驱动.72.5.3 宿主语言 JAVA 应用程序接口JDBC .92.5.4 嵌入式 SQL 应用示例 .143 数据检索功能的实现.173.1 图书管理系统 .183.2 数据检索功能的设计 .183.2.1 系统结构设计.183.2.2 数据库设计.193.3 数据检索功能的实现 .21总 结 .26致 谢 .27参考文献: .28本科毕业论文(设计)第 0 页1 1 绪论绪论1.11.1课题背景课题背景 数据库技术是现代信息科学与技术的重要组成部分,是计算机数据处理与信息管理系统的核心。数据库技术研究和解决了计算机信息处理过程中大量数据有效地组织和存储的问题,在数据库系统中减少数据

8、存储冗余、实现数据共享、保障数据安全以及高效地检索数据和处理数据。随着嵌入式系统软件的发展,编程语言从 10 多年以前的汇编为主流发展到现在 C、C+、Java 为主流。另外,面向对象设计技术、组件技术等在嵌入式系统软件设计中的应用也日益引起人们的重视。嵌入式 SQL(英文: Embedded SQL)是一种将 SQL 语句直接写入 C 语言,JAVAL,FORTRAN, Ada 等编程语言的源代码中的方法。借此方法,可使得应用程序拥有了访问数据以及处理数据的能力。在这一方法中,将 SQL 文嵌入的目标源码的语言称为宿主语言。1.21.2国内外的发展及现状国内外的发展及现状随着嵌入式 SQL

9、技术的普遍使用,支持嵌入式 SQL 的数据库产品也大量出现:Oracle DatabaseAda Pro*Ada 在 Oracle 7.3 的版本中被加入产品族,并且在 Oracle 8 中被替换为SQL*Module。但在此之后就一直没有更新2。SQL*Module 支持 Ada 83.C/C+ Pro*C 在 Oracle 8 时被替换成了 Pro*C/C+。之后 Pro*C/C+ 到 Oracle Database 11g 仍都在被支持。COBOL Pro*COBOL 到 Oracle Database 11g 仍都在被支持。Fortran Pro*FORTRAN 在 Oracle 8

10、之后的 Oracle 版本中就不再被更新,但 Bug 修正仍在维护中3。本科毕业论文(设计)第 1 页Pascal Pro*Pascal 在 Oracle 8 之后的 Oracle 版本中就不再被更新3。PI/L Pro*PL/I 自 Oracle 8 之后就不再被更新,但文档中仍然有记述3。IBM DB2IBM DB2 的版本 9 中提供了对于 C/C+,COBOL,Java 等宿主语言的嵌入式SQL 的支持。PostgreSQLC/C+ PostgreSQL 自版本 6.3 起就提供了对于 C/C+的嵌入式 SQL 的支持,以 ECPG组件的形式存在。1.31.3 课题研究课题研究的主要内

11、容的主要内容首先,本文简要的叙述了嵌入式 SQL 的定义以及发展现状,并详细介绍了嵌入式 SQL 的数据检索语句:基本嵌入式 SQL 数据检索功能语句和复杂嵌入式 SQL 数据检索语句;然后,本文以 JAVA 为宿主语言,重点分析嵌入式SQL 在宿主语言 JAVA 中的工作原理和处理流程 ,以及对 JDBC 驱动和 JDBC API 做了详细介绍;最后,针对嵌入式 SQL 和宿主语言 JAVA,以实例“图书馆管理系统”演示嵌入式 SQL 的具体应用。2 2 嵌入式嵌入式 SQL 技术技术2.12.1 SQL 和嵌入式和嵌入式 SQL 简介简介SQL(Structured Query Langu

12、age)结构化查询语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。SQL 是高级的非过程化编程语言,允许用户在高层数据结构上工作。它不要求用户指定对数据的存放方法,也不需要用户了解具体的数据存放方式,所以具有完全不同底层结构的不同数据库系统,可以使用相同的 SQL 语言作为数据输入与管理的接口。它以记录集合作为操作对象,所有 SQL 语句接受集合作为输入,返回集合作为输出,这种集合特性允许一条 SQL 语句的输出作为另一条 SQL 语句的输入,所以 SQL 语句可以嵌套,这使他具有极大的灵本科毕业论文(设计)第 2 页活性和强大的功能,在多数情况下,在其他

13、语言中需要一大段程序实现的功能只需要一个 SQL 语句就可以达到目的,这也意味着用 SQL 语言可以写出非常复杂的语句。SQL 语言包含 4 个部分: 数据定义语言(DDL),例如:CREATE、DROP、ALTER 等语句。 数据操作语言(DML),例如:INSERT(插入)、UPDATE(修改)、DELETE(删除)语句。 数据查询语言(DQL),例如:SELECT 语句。 数据控制语言(DCL),例如:GRANT、REVOKE、COMMIT、ROLLBACK 等语句。 SQL 语言包括三种主要程序设计语言类别的语句:数据定义语言(DDL),数据操作语言(DML)及数据控制语言(DCL)。

14、嵌入式 SQL(英文: Embedded SQL)是一种将 SQL 语句直接写入 C 语言,COBOL,FORTRAN, JAVA 等编程语言的源代码中的方法。借此方法,可使得应用程序拥有了访问数据以及处理数据的能力。在这一方法中,将 SQL 文嵌入的目标源码的语言称为宿主语言。在 SQL 标准的 SQL86(1986 年发布)中定义了对于 COBOL, FORTRAN, PI/L等语言的嵌入式 SQL 的规范。在 SQL89(1989 年发布)规范中,定义了对于 C语言的嵌入式 SQL 的规范。一些大型的数据库厂商发布的数据库产品中,都提供了对于嵌入式 SQL 的支持。比如 Oracle,

15、DB2 等。2.22.2 SQL 语句语句 2.2.12.2.1 基本基本 SQLSQL 语句语句 简单嵌入式 SQL 数据检索功能语句表示只是对单表的数据检索,其基本语句为:“select from where group by having order by “例如:本科毕业论文(设计)第 3 页查询学号为“S040901106”学生的姓名表 2-1,studentInfo 表相关数据StuIdStuNameDeptIdSexS040201101任非02MS040901102王情02FS040901103戴丽08FS040901106郑治08MSQL 语句: SELECT StuName

16、FROM studentInfo WHERE StuId = S040901106; 2.2.12.2.1 复杂复杂 SQLSQL 语句语句 然而现实数据库项目中,对于数据库的数据检索可能设计有多个表,或要求更复杂的数据检索 SQL 语句,所以有必要介绍几种复杂的嵌入式 SQL 数据检索语句。3.2.13.2.1 联接查询联接查询 (一一)内联接内联接内连接查询操作列出与连接条件匹配的数据行,它使用比较运算符比较被连接列的列值。内连接分三种:1、等值连接:在连接条件中使用等于号(=)运算符比较被连接列的列值,其查询结果中列出被连接表中的所有列,包括其中的重复列。2、不等连接: 在连接条件使用除

17、等于运算符以外的其它比较运算符比较被连接的列的列值。这些运算符包括、=、=、!和。3、自然连接:在连接条件中使用等于(=)运算符比较被连接列的列值,但它使用选择列表指出查询结果集合中所包括的列,并删除连接表中的重复列。例,下面使用等值连接列出 authors 和 publishers 表中位于同一城市的作者和本科毕业论文(设计)第 4 页出版社:SELECT *FROM authors AS a INNER JOIN publishers AS pON a.city=p.city 又如使用自然连接,在选择列表中删除 authors 和 publishers 表中重复列(city和 state)

18、:SELECT a.*,p.pub_id,p.pub_name,p.countryFROM authors AS a INNER JOIN publishers AS pON a.city=p.city(二二)外连接外连接内连接时,返回查询结果集合中的仅是符合查询条件( WHERE 搜索条件或 HAVING 条件)和连接条件的行。而采用外连接时,它返回到查询结果集合中的不仅包含符合连接条件的行,而且还包括左表(左外连接时)、右表(右外连接时)或两个边接表(全外连接)中的所有数据行。如下面使用左外连接将论坛内容和作者信息连接起来:SELECT a.*,b.* FROM luntan LEFT J

19、OIN usertable as bON a.username=b.username以及他们所在的城市:SELECT a.*,b.* FROM city as a FULL OUTER JOIN user as bON a.username=b.username(三三)交叉连接交叉连接交叉连接不带 WHERE 子句,它返回被连接的两个表所有数据行的笛卡尔积,返回到结果集合中的数据行数等于第一个表中符合查询条件的数据行数乘以第二个表中符合查询条件的数据行数。例,titles 表中有 6 类图书,而 publishers 表中有 8 家出版社,则下列交叉连接检索到的记录数将等于 6*8=48 行。

20、SELECT type,pub_nameFROM titles CROSS JOIN publishersORDER BY type本科毕业论文(设计)第 5 页2.32.3 嵌入式嵌入式 SQL 语句语句 (1)宿主变量宿主变量就是在嵌入式 SQL 语句中引用主语言说明的程序变量如:在 JAVA 语句中对程序变量:username、password 的进行数据库插入操作String sql = insert into reader(username,password) values(+ username+ ,+ password+ );在嵌入式 SQL 语句中使用宿主变量前,必须采用 “+u

21、sername + ” 的形式给宿主变量说明。2.42.4 嵌入式嵌入式 SQLSQL 工作原理及流程工作原理及流程图 2.1 数据库产品中嵌入式 SQL 操作流程图为了解决嵌入式 SQL 源码的处理流程问题,数据库厂商需要提供一个嵌入式 SQL 的预编译器,把包含有嵌入式 SQL 文的宿主语言源码转换成纯宿主语言的代码。这样一来,源码即可使用宿主语言对应的编译器进行编译。通常情况下,经过嵌入式 SQL 的预编译之后,原有的嵌入式 SQL 会被转换成一系列函数本科毕业论文(设计)第 6 页调用。因此,数据库厂商还需要提供一些列函数库(图 2.1),以确保链接器能够把代码中的函数调用与对应的实现

22、链接起来。2.52.5 嵌入式嵌入式 SQLSQL 应用应用 2.5.12.5.1 宿主语言宿主语言 JAVAJAVA 简介简介 Java,是由 Sun Microsystems 公司于 1995 年 5 月推出的 Java 程序设计语言和 Java 平台的总称。用 Java 实现的 HotJava 浏览器(支持 Java applet)显示了 Java 的魅力:跨平台、动态的 Web、Internet 计算。从此,Java 被广泛接受并推动了 Web 的迅速发展,常用的浏览器现在均支持 Java applet。JAVA 项目运行环境平台(图 2.2): 图 2.2JAVA 程序运行环境平台图

23、 2.5.22.5.2 宿主语言宿主语言 JAVAJAVA DBDB 引擎驱动引擎驱动 众所周知,在台式机领域,DB 是一个十分关键的基础软件。以往嵌入式系统的软件可能更侧重于与硬件的交互与控制,但随着对嵌入式系统功能需求的日益复杂化,嵌入式系统软件中,信息、数据的保存与管理的比重也日应用组件应用组件应用组件.CLASS 文件库DB 组件 JVM本科毕业论文(设计)第 7 页益增加。在这样的背景下,嵌入式系统软件开发中,通过引入 DB 组件,对实现软件整体框架结构的组件化与简单化,有着十分明显而重要的意义。DB 引擎驱动的总体框架(如图 2.3):整个 DB 组件设计为 3 层结构,分别为 J

24、DBC 接口层、SQL 解释层和动作执行层。这 3 层之间呈单向依赖关系。也就是说,SQL 解释层依赖于动作执行层,但动作执行层不依赖于其上面的两层,可以单独存在而直接被使用。如果用户以使用方便为主要目的,可采用完全配置方式,应用程序通过 JDBC 接口层存取数据。反之,如果用户对空间和效率要求较高,可仅配置动作执行层组件,应用程序直接调用动作执行层的 API 进行数据的检过和更新等操作。 图 2.3 DB 引擎驱动的总体框架图(1)JDBC 接口层如前文所述是可选组件,旨在为应用程序提供一个标准的 DB 调用接口。(2)SQL 解释层本 DB 组件实现的 SQL 解释层,只实现了标准 SQL

25、 的一个小子集,主要完成 select、delete、insert、update、create table、drop table 等功能。其中数据操作语句(select、delete、insert、update)的解释要点之一是where 条件子句的解释执行,类似于数学表达式求值算法。JDBC 接口层 SQL 解释层 动作执行层 JVM本科毕业论文(设计)第 8 页(3)动作执行层动作执行层是整个 DB 组件的核心和关键,因为所有的 DB 操作最终都由该层完成,同时用户也可以跳过上面的两层,直接调用该层的 API,以实现相同的数据操作功能。 2.5.32.5.3 宿主语言宿主语言 JAVAJA

26、VA 应用程序接口应用程序接口JDBCJDBC (1) JDBC 介绍 JDBC(Java Data Base Connectivity,java 数据库连接)是一种用于执行 SQL 语句的 Java API(如图 2.6、图 2.7),可以为多种关系数据库提供统一访问,它由一组用 Java 语言编写的类和接口组成。JDBC 为工具/数据库开发人员提供了一个标准的 API,据此可以构建更高级的工具和接口,使数据库开发人员能够用纯 Java API 编写数据库应用程序。Java 数据库连接体系结构是用于 Java 应用程序连接数据库的标准方法。JDBC 对 Java 程序员而言是 API,对实现

27、与数据库连接的服务提供商而言是接口模型。作为 API,JDBC 为程序开发提供标准的接口,并为数据库厂商及第三方中间件厂商实现与数据库的连接提供了标准方法(如图 2.4)。JDBC 使用已有的 SQL 标准并支持与其它数据库连接标准,如 ODBC 之间的桥接。JDBC实现了所有这些面向标准的目标并且具有简单、严格类型定义且高性能实现的接口。 Java 具有坚固、安全、易于使用、易于理解和可从网络上自动下载等特性,是编写数据库应用程序的杰出语言。所需要的只是 Java 应用程序与各种不同数据库之间进行对话的方法。而 JDBC 正是作为此种用途的机制。 JDBC 扩展了 Java 的功能。例如,用

28、 Java 和 JDBC API 可以发布含有 applet 的网页,而该 applet 使用的信息可能来自远程数据库。企业也可以用 JDBC 通过 Intranet 将所有职员连到一个或多个内部数据库中(即使这些职员所用的计算机有 Windows、 Macintosh 和 UNIX 等各种不同的操本科毕业论文(设计)第 9 页作系统)。随着越来越多的程序员开始使用 Java 编程语言,对从 Java 中便捷地访问数据库的要求也在日益增加。图 2.4.JDBC 框架图(2) JDBC 驱动类型 图 2.5JDBC 驱动类型说明图 JDBC-ODBC 桥(JDBC-ODBC bridge)(图

29、2.5) JDBC 调用ODBC 调用。要求 ODBC 代码、client 端代码 都要在客户机上安装。 本科毕业论文(设计)第 10 页 本地 API 部分 JAVA 驱动(Native-API partly-Java driver) JDBC 调用 数据库的 Client 端 API,也需要在客户机上 安装代码。 网络协议完全 JAVA 驱动(JDBC-Net pure Java driver) JDBC 调用 独立于任何 DBMS 的网络协议,该协议 将由另外一个服务器转换为某种 DBMS 协议。 本地协议完全 JAVA 驱动(Native-protocol pure Java driv

30、er) JDBC 调用 特定 DBMS 的网络协议。(3) JDBC APIJDBC API 功能: 建立与数据库的连接 发送 SQL 语句 处理结果本科毕业论文(设计)第 11 页(1 1)JDBCJDBC APIAPI 类:类:图 2.6 JDBC API 所涉及的类图 (2)JDBC 类层次:类层次: 图 2.7 JDBC API 类层次图(3 3)建立数据库的连接:)建立数据库的连接:本科毕业论文(设计)第 12 页 JDBC 的 DriverManager 查找到相应的数据库 Driver 并装载。从系统属性 java.sql 中读取 Driver 的类名,并一一注册。在程序中使用

31、Class.forName( )方法动态装载并注册 Driver。 如 Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver”), 注册 JDBC-ODBC 桥。 通过 DriverManager.getConnection( )与数据库建立连接数据库连接串 URL,指定数据源以及使用的数据库访问协议。语法格式:jdbc:例:通过 JDBC-ODBC 桥接驱动与 wombat 数据源建立连接。Connection con = DriverManager.getConnection(“jdbc:odbc: wombat”,”username”,”password

32、”);(4 4)传送)传送 SQLSQL 语句:语句: 在数据库连接上创建 Statement 对象,将各种 SQL 语句发送到所连接的数据库。/* 传送 SQL 语句并得到结果集 rs */Statement stmt = con.createStatement( );ResultSet rs = stmt.executeQuery(“ SELECT a, b, c FROM Table1”); 对于多次执行但参数不同的 SQL 语句,可以使用PreparedStatement 对象。本科毕业论文(设计)第 13 页 使用 CallableStatement 对象调用数据库上的存储过程。(5

33、 5)处理结果集:)处理结果集: 结果集是查询语句返回的数据库记录的集合。 在结果集中通过游标(Cursor)控制具体记录的访问。 SQL 数据类型与 JAVA 数据类型的转换 根据 SQL 数据类型的不同,使用不同的方法读取数据。 /*处理结果集 rs*/while (rs.next( )int x = rs.getInt(“a”);String s = rs.getString(“b”);float f = getFloat(“c”);stmt.close( );con.close( ) 2.5.42.5.4 嵌入式嵌入式 SQLSQL 应用示例应用示例 本节以图书馆管理系统的部分功能模块

34、为例,演示说明 JAVA 语言中嵌入SQL 的处理流程。本科毕业论文(设计)第 14 页 图 2.8 用户登陆界面 图 2.9 用户登陆后操作界面 系统以用户登陆界面的初始界面,根据用户输入的用户名和密码,使用getText()方法获取用户输入的值,并赋值给 java 定义变量“user”、“pass”,利用 SQL 语句结合变量对数据库中的表 USER 进行数据匹配,用户只有在输入与数据库相匹配的用户名和密码时,才能登陆系统,进如图 2.9 用户操作界面具体sql语句:select * from user where name= + + user+ and pass= + + pass +

35、;部分代码展示:部分代码展示:登陆时对数据库的操作:private void btn_okActionPerformed(ActionEvent e) String user = tf_user.getText(); / 获得用户名String pass = pf_pass.getText(); / 获得密码String username = ;int is_admin;本科毕业论文(设计)第 15 页/ 未输入用户名if (user.equals() JOptionPane.showMessageDialog(this, 用户名不允许为空!);return;try / 在数据库中查询Stri

36、ng sqlStr = select * from user where name= + + user+ and pass= + + pass + ;ResultSet result = BaseDao.executeQuery(sqlStr);if (result.next() username = result.getString(name);is_admin = result.getInt(is_admin);BaseDao.close(); else JOptionPane.showMessageDialog(this, 用户名或密码不正确!);BaseDao.close();retu

37、rn;GlobalVar.login_user = username; / 记录当前用户/ 进入主界面Main main = new Main();main.setPurView(byte) is_admin);this.dispose(); catch (Exception ex) 本科毕业论文(设计)第 16 页ex.printStackTrace();连接数据库部分:/ 构造方法,创建数据库连接private BaseDao() try if (conn = null) Class.forName(driver); / 加载数据库驱动conn = DriverManager.getCon

38、nection(url, dbUser, dbPwd); / 建立数据库连接 elsereturn; catch (Exception ee) ee.printStackTrace();实际查询操作部分:/ 执行数据库查询操作public static ResultSet executeQuery(String sql) try if (conn = null)new BaseDao();return conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE).executeQuery(sql

39、); / 执行本科毕业论文(设计)第 17 页数据库查询 catch (SQLException e) e.printStackTrace();return null;3 3 数据检索功能的实现数据检索功能的实现 本章以“图书馆管理系统”为例,介绍图书馆系统结构设计和数据库设计,重点针对系统的“查询管理”模块的“图书信息查询”进行说明分析。3.13.1 图书管理系统图书管理系统图书馆作为一种信息资源的集散地,图书和用户借阅资料繁多,包含很多的信息数据的管理,现今,有很多的图书馆都是初步开始使用,甚至尚未使用计算机进行信息管理。根据调查得知,他们以前对信息管理的主要方式是基于文本、表格等纸介质的

40、手工处理,对于图书借阅情况(如借书天数、超过限定借书时间的天数)的统计和核实等往往采用对借书卡的人工检查进行,对借阅者的借阅权限、以及借阅天数等用人工计算、手抄进行。数据信息处理工作量大,容易出错;由于数据繁多,容易丢失,且不易查找。总的来说,缺乏系统,规范的信息管理手段。尽管有的图书馆有计算机,但是尚未用于信息管理,没有发挥它的效力,资源闲置比较突出,这就是管理信息系统的开发的基本环境。数据处理手工操作,工作量大,出错率高,出错后不易更改。图书馆采取手工方式对图书借阅情况进行人工管理,由于信息比较多,图书借阅信息的管理工作混乱而又复杂;一般借阅情况是记录在借书证上,图书的数目和内容记录在文件

41、中,图书馆的工作人员和管理员也只是当时对它比较清楚,时间一长,如再要进行查询,就得在众多的资料中翻阅、查找了,造成查询费时、费力。如要对很长时间以前的图书进行更改就更加困难了。本科毕业论文(设计)第 18 页本系统以研究 java 嵌入 SQL 为目的实现图书馆的基本功能:用户登陆、图书管理、用户管理、用户借书还书管理。3.23.2 数据检索功能的设计数据检索功能的设计 3.2.13.2.1 系统结构设计系统结构设计 本系统使用对象为图书馆管理员。其中包括基本的信息维护、用户的借还书管理、数据检索和系统管理四大模块。 错误用户名或密码系统主页面借还管理基础维护菜单 查询管理 系统维护用户信息图

42、书维护借书 还书图书查询用户查询密码修改退出系统 新增用户信息 删除用户信息 修改用户信息 新增图书信息 删除图书信息修改图书信息管理员登陆登陆登陆失败本科毕业论文(设计)第 19 页图 3.1 总体设计架构 3.2.23.2.2 数据库设计数据库设计本系统数据库使用的是 MySQL 数据库,使用该数据库是因为本数据库的使用方便性。首先建立一个数据库名为 library,在其中建立四个信息表,通过输入数据建立表或者直接建立空表并设置字段名和数据类型。建立的四个表分别为用户信息表、图书信息表、借还书信息表、管理员信息表。数据库具体设计如表 3-1,3-2,3-3,3-4 所示:表 3-1 用户信

43、息表(user)字段名数据类型可否为空说明idint(100)不可自动编号nameVarchar(20)不可用户名typeVarchar(20)不可用户角色sexVarchar(20)不可性别max_numVarchar(20)不可最大借书数days_numVarchar(20)不可结束天数 表 3-2 图书息表(book)字段名数据类型可否为空说明idint(100)不可图书编号nameVarchar(20)不可图书名typeVarchar(20)不可种类authorVarchar(20)不可作者本科毕业论文(设计)第 20 页translatorVarchar(20)不可翻译者publis

44、herVarchar(20)不可出版社Publish_timeVarchar(20)不可出版时间priceVarchar(20)不可价格stockVarchar(20)不可状态 表 3-3 借还书信息表(borrow)字段名数据类型可否为空说明book_idVarchar(20)不可图书编号reader_idVarchar(20)不可读者 IDborrow_dateVarchar(20)不可借书时间back_dateVarchar(20)不可还书时间is_backint(10)不可是否归还idint(100)不可自动编号表 3-4 管理员信息表(user)字段名数据类型可否为空说明idint(

45、100)不可自动编号nameVarchar(20)不可管理员用户名passVarchar(20)不可借用户密码is_adminint(10)不可是否为管理员本科毕业论文(设计)第 21 页3.33.3 数据检索功能的实现数据检索功能的实现该部分以系统查询图书信息模块为例,重点演示说明在宿主语言 JAVA 中嵌入 SQL 实现对书籍数据的检索。 图 3.2 图书信息查询操作界面(1) 图 3.3 图书信息查询操作界面(2)本科毕业论文(设计)第 22 页 用户以正确匹配的用户名和密码登陆系统后,点击“查询管理”进入“图书查询”,可出现图 3.3,。 该部分图书检索功能以图书编号为检索条件,输入“

46、图书编号”,点击查询即可查找相应的图书信息,程序实现中,在查询图书的方法 BookQuery内设置“图书编号”变量“id”,通过 String id = tf_id.getText();获取用户输入的图书编号 ,最后通过对 sql 语句的执行,获取所要检索的图书信息SQL 语句:String sql = select * from book;if (id != null & id.length() 0) sql = select * from book where id = + id + ;部分代码展示:部分代码展示: 连接数据库部分:/ 构造方法,创建数据库连接private BaseDao

47、() try if (conn = null) Class.forName(driver); / 加载数据库驱动conn = DriverManager.getConnection(url, dbUser, dbPwd); / 建立数据库连接 elsereturn;本科毕业论文(设计)第 23 页 catch (Exception ee) ee.printStackTrace();前台实现数据检索的方法:private void btn_cxActionPerformed(ActionEvent e) String id = tf_id.getText(); / 获取图书编号/ 根据查询条件构

48、建sqlString sql = select * from book;if (id != null & id.length() 0) sql = select * from book where id = + id + ;/ 执行查询操作,将查询结果显示到界面Object results = getResult(BookDao.selectBookList(sql);DefaultTableModel model = new DefaultTableModel();table.setModel(model);model.setDataVector(results, heads);具体执行部分

49、:/ 执行数据库查询操作public static ResultSet executeQuery(String sql) try 本科毕业论文(设计)第 24 页if (conn = null)new BaseDao();return conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE).executeQuery(sql); / 执行数据库查询 catch (SQLException e) e.printStackTrace();return null;获取最后书籍数据信息:/获得满足s

50、ql语句的图书实体列表public static List selectBookList(String sql) List list = new ArrayList();ResultSet rs = BaseDao.executeQuery(sql);try while (rs.next() Book book = new Book();book.setId(rs.getString(id);book.setType(rs.getString(type);book.setName(rs.getString(name);book.setAuthor(rs.getString(author);bo

51、ok.setTranslator(rs.getString(translator);book.setPublisher(rs.getString(publisher);本科毕业论文(设计)第 25 页book.setPublish_time(rs.getDate(publish_time);book.setPrice(rs.getDouble(price);book.setStock(rs.getInt(stock);list.add(book); catch (Exception e) e.printStackTrace();BaseDao.close();return list; 总总 结

52、结本论文首先简要介绍了嵌入式 SQL 的定义和发展现状,然后以 JAVA 为宿主语言,重点介绍了 JAVA DB 引擎驱动以及应用程序接口 JDBC,最后以“图书馆管理系统”为示例,完成 JAVA 嵌入 SQL 数据检索功能的实现。论文分为三大部分,重点为第二部分:嵌入式 SQL 技术,在简要介绍嵌入式 SQL 定义后,针对嵌入式 SQL 语句,分别介绍了简单的嵌入式 SQL 语句和复杂的嵌入式 SQL 语句,接着以 JAVA 为宿主语言,就嵌入式 SQL 的工作原理以及流程做了详细介绍,最后以图书馆管理系统的登录功能为示例,演示并说明 JAVA 嵌入 SQL 的具体实现。本科毕业论文(设计)

53、第 26 页致致 谢谢 在这里我首先要感谢我的导师陈家骏老师。陈老师不仅学识渊博,而且平易近人。陈老师对学生的毕业设计非常负责。在我学习遇到问题时,老师不厌其烦,详细为我解释难点。在我完成初稿后,老师又对我的初稿做了大量批注,提出更进一步的要求。虽然我们的毕业设计占用了老师本就不多的休息时间,但老师任然耐心指导我们,监督同学们按时完成毕业设计。老师这种无私奉献的敬业精神,勤勤恳恳的工作态度给我很多启示。老师不仅教导我们如何学习,更教会我们如何做人。正是由于陈老师的无私帮助,我才能够顺利完成论文。在此,我向老师表示我诚挚的谢意。最后,我要感谢我的父母。在这些年的学习中,父母是我强力的后盾。父母从

54、没有强迫我去学习自己不喜欢的东西,总是让我自由的发展。在我下定决心要做什么后,父母总会在背后默默地支持我,告诉我只要努力过就没有遗憾。在这里祝父母身体健康,生活愉快。还有许多给了我无私帮助的人,在这里向他们表示诚挚的谢意。本科毕业论文(设计)第 27 页 参考文献参考文献: : 1 (美)Kenneth F.Krutsch David S.Cargo Virginia Howlett Java 用户界面编程指南电子工业出版社 2002-2-1:158-1692朱喜福.徐剑魁 .java 程序设计. 清华大学出版社.2010-5-1:289-3003冯飞 .数据库原理. 清华大学出版社 , 2008.ISBN: 9787302184454:129-2904姜学峰.数据库管理系统及其应用A.中国烟草行业信息化研讨会论文集C.2004 年5李安渝、杜小勇;数据库管理系统 现状和发展方向N;中国计算机报 2002 年6孟小峰;中文数据库自然语言查询处理研究D;中国科学院研究生院.1999 年7 曹晓剑. 徐良贤. DB2 编程接口分析J. 计算机工程, 2004, (S1)8王巧玉. 嵌入式计算机技术J. 微电子学与计算机, 1993, (04) .

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!