Java JDBC基础

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

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

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

资源描述

JDBC数据库编程在超市中购买东西时,在很多的商品中是不容易找到自己想要的商品的,这时候通常就需要找超市管理人员来帮忙解决。这就好像Java中的数据库编程JDBC。在Java程序中,如果希望对很多的数据进行操作时,通常需要使用数据库编程。本章将学习如何进行数据库编程。通过本章的学习,读者应该实现如下几个目标。—对数据库有基本了解。—熟练掌握JDBC的编程步骤。—掌握如何在Java中进行数据库操作。17.1数据库基本介绍数据库在应用程序中占有相当重要的地位,几乎所有的系统都必须要使用数据库。数据库发展到现在已经相当成熟了,已由原来的Sybase数据库,发展到现在的SQL(StructuredQueryLanguage)、Oracal等高级数据库。17.1.1数据库介绍首先介绍一下什么是数据库。数据库的基本结构分三个层次,反映了观察数据库的三种不同角度。物理数据层是数据库的最内层,是物理存储设备上实际存储的数据的集合。这些数据是原始数据,同时也是加工的对象,由内部模式描述的指令操作处理的位串、字符和字组成。概念数据层是数据库的中间一层,是数据库的整体逻辑表示,指出了每个数据的逻辑定义及数据间的逻辑联系,是保存记录的集合。它所涉及的是数据库所有对象的逻辑关系,不是它们的物理情况,而是数据库管理员概念下的数据库。逻辑数据层是用户所看到和使用的数据库,表示了一个或一些特定用户使用的数据集合,即逻辑记录的集合。17.1.2数据库应用架构数据库应用架构包括两种不同形式的数据库应用程序架构模型,主要包括C/S两层结构的与三层(或多层)结构的两种。两层结构数据库应用架构模型的特点是所有的用户输入、验证及数据访问的功能都位于客户端中,一般来说客户端只适用于某一种特定的数据库。客户端与数据库服务器二者之间一般使用专用的协议进行连接,也有的情况是使用通用的数据库连接,如JDBC、ODBC等。但是使用两层结构数据库也是存在很大缺点的。客户端与数据库服务器之间直接耦合,依赖度很高,无论哪边发生变化,都会直接影响到另一边。任何一种数据库服务器能够支持的连接数都是很有限的,如果客户端很多,而又让每个客户端独自占用一个数据库连接不利于提高数据库的利用效率,也有可能造成其他用户不能正常使用数据库。提示:在现在的开发中,已经很少使用两层结构的数据库应用模型了,而都是使用更加优越的三层结构数据库应用模型。三层结构的数据库应用模型的特点主要是,客户端与数据库之间不直接耦合,而是通过中间层应用服务器进行耦合,当客户端或数据库需要发生变化时可以通过中间层隔离变化,减小影响。一般情况下在三层结构中,客户端软件都由通用的浏览器来担任,这样在对应用进行部署时就省去了为每台机器安装专用客户端的麻烦。同时,当开发了新的应用后,客户端机器也不需要做任何改变,打开浏览器浏览的自然就是新的功能了。根据需要,中间层的应用服务器可以同时连接几个同构或异构的数据库服务器,而这些在客户端的使用者是感觉不到也不用关心的。每个客户端不必独占一个数据库连接,可以大大提高数据库连接与数据库的利用效率。17.1.3数据库模型数据库又可以从基于不同的模型来分类,可以分为层次型数据库、网状型数据库、关系型数据库、面向对象型数据库。层次型数据库是一组通过链接而互相联系在一起的记录。树结构图是层次型数据库的模式。层次模型的特点是记录之间的联系是通过指针实现,表示的是对象的联系。其缺点是无法反映多对象的联系,并且由于层次顺序的严格和复杂,导致数据的查询和更新操作复杂,因此应用程序的编写也比较复杂。网状数据库是基于网络模型建立的数据库。网络模型,是使用网格结构表示实体类型、实体间联系的数据模型。网状模型的特点是记录之间的联系通过指针实现,多对多的联系容易实现。缺点是编写应用程序比较复杂,程序员必须熟悉数据库的逻辑结构。关系数据库是基于关系模型建立的数据库。关系模型由一系列表格组成,用表格来表达数据集,用外键(关系)来表达数据集之间的联系。现在应用最常见的就是关系数据库,在下一节也主要来介绍一下关系数据库。提示:关系数据库是使用最广泛的数据库。对象型数据库是建立在面向对象模型基础之上。面向对象模型中最基本的概念是对象和类。对象是现实世界中实体的模型化,共享同一属性集和方法集的所有对象构成一个类。类可以有嵌套结构。系统中的所有类组成一个有根、有向无环图,称为类层次。17.2JDBC数据库编程介绍JDBC就是JavaDataBaseConnectivity,即Java数据库连接。JDBC主要完成的几个任务分别是,与数据库建立一个连接;向数据库发送SQL语句;处理数据库返回的结果。实用Java程序语言和JDBC工具包开发程序,是独立于平台和厂商的。JDBC就是将Java程序语言编写出来的程序,与数据库相连接。接下来,将详细讲述如何利用JDBC为程序连接数据库。17.2.1JDBC和ODBC的关系在JDBC数据库编程中经常要使用ODBC。所以,在讲述JDBC的驱动程序分类之前,首先介绍什么是ODBC。ODBC是指OpenDataBaseConnectivity,即开放数据库互连,它建立了一组规范,并且提供了一组对数据库访问的标准API(应用程序编程接口),这些API利用SQL来完成其大部分任务。ODBC也提供了对SQL的支持。JDBC驱动程序由实施了这些接口的类组成,JDBC的总体结构有4个组件,分别为应用程序、驱动程序管理器、驱动程序和数据源。将JDBC转换成ODBC驱动器,依靠ODBC驱动器和数据库通信。在这种方式下,ODBC驱动程序和桥代码必须出现在用户的每台机器中,这种类型的驱动程序最适合于企业网(这种网络上客户机的安装不是主要问题),或者是用Java编写的三层结构的应用程序服务器代码。本地API一部分用Java来编写的驱动程序。这种类型的驱动程序把客户机API上的JDBC调用转换为Oracle、Sybase、Informix、DB2或其他DBMS的调用。像其他驱动程序一样,这种类型的驱动程序,要求将某些二进制代码加载到每台客户机上。JDBC网络纯Java驱动程序将JDBC转换为与DBMS无关的网络协议,这种协议又被某个服务器转换为一种DBMS协议。这种网络服务器中间件能够将它的纯Java客户机连接到多种不同的数据库上,所用的具体协议取决于提供者。通常,这是最为灵活的JDBC驱动程序。所有这种解决方案的提供者,都提供适合于Intranet用的产品。为了使这些产品支持Internet,它们必须处理Web所提出的安全性、通过防火墙的访问等额外要求,几家提供者正将JDBC驱动程序,加到他们现有的数据库中间件产品中。本地协议纯Java驱动程序类型的驱动程序将JDBC调用直接转换为DBMS所使用的网络协议,这将允许从客户机机器上直接调用DBMS服务器,是Intranet访问的一个很实用的解决方法。由于许多这样的协议都是专用的,因此数据库提供者自己将是主要来源。17.2.2为什么使用JDBC数据库编程目前市面上有很多种数据库,例如Oracle、Sybase、MSSQLServer和MSAccess等数据库。有些读者就会认为既然有这么多数据库,这里要学习数据库编程,是不是就要学习对应每一种数据库的编程方法呢。在JDBC之前是这样的,但是有了JDBC后,就变得非常容易。JDBC在数据库编程中将起到非常重要的作用。首先程序员可以使用Java开发基于数据库的应用程序,在遵守Java语言规则的同时,可以使用标准的SQL语句访问任何数据库。如果数据库厂商提供较低层的驱动程序,程序员可以在自己的软件中,使用比较优化的驱动程序。很多数据库系统带有JDBC驱动程序,Java程序就通过JDBC驱动程序与数据库相连,执行查询、提取数据等操作。Sun公司还开发了JDBC-ODBCbridge,用此技术,Java程序就可以访问带有ODBC驱动程序的数据库。目前,大多数数据库系统都带有ODBC驱动程序,所以,Java程序能访问诸如Oracle、Sybase、MSSQLServer和MSAccess等数据库。17.3SQL数据库操作技术在Java中进行数据库操作,除了需要JDBC编程外,还需要一个数据库的技术,那就是SQL技术。SQL技术是专门的,直接的对数据库操作的技术。17.3.1什么是SQLSQL是StructuredQueryLanguage的缩写,StructuredQueryLanguage翻译过来叫做结构化查询语言。SQL是一种专门用来与数据库通信的语言。与其他语言(如Java、VisualBasic这样的程序设计语言)不一样,SQL由很少的词构成,这是有意而为的。SQL能够很好地完成一项任务——提供一种从数据库中读写数据的简单有效的方法。SQL是存在很多优点的,从整体的角度来说SQL有如下的优点。首先SQL不是某个特定数据库供应商专有的语言,几乎所有重要的DBMS都支持SQL,所以,此语言几乎能与所有数据库打交道。然后就是SQL简单易学。它的语句全都是由具有很强描述性的英语单词组成,而且这些单词的数目不多,这个就是它简单易学的主要原因。最后SQL看上去尽管很简单,但实际上是一种强有力的语言,灵活使用其语言元素,可以进行非常复杂和高级的数据库操作。注意:SQL语句全都是由具有很强描述性的英语单词组成,而且这些单词的数目不多。17.3.2如何进行SQL操作使用SQL能够完成数据库的创建、添加、删除、修改、查询等操作。本节就来简单地学习一下如何进行SQL操作。查询操作是数据库操作中最常见的操作。在SQL中,使用Select语句可在需要的表单中检索数据,在进行检索之前,必须知道需要的数据存储在哪里,Select语句可由多个查询子句组成。查询操作的基本结构如下所示。Select[all|distinct][intonew_table_name]From[表名|视图名]〔where搜索条件〕Groupby把查到的按什么标准分组〔having搜索条件〕〔orderby按什么顺序排序〕〔升序|降序〕在查询操作的基本结构中,all是指明查询结果中可以显示值相同的列,同时all是系统默认值。distinct是指明查询结果中如有值相同的列,只显示其中的一列,对distinct来说,NULL被认为相同的值。into子句用于把查询结果存放到一个新建表中。注意:select…..into句式不能与compute子句一起使用。新表是由select子句指定的列构成。From子句指定需要进行数据查询的表。where子句指定数据检索的条件,以限制返回的数据。Groupby子句指定查询结果的分组条件。having子句指定分组搜索条件,它通常与Groupby子句一起使用。orderby子句指定查询结果的排序方式。除了查询操作外,还有其他操作。数据插入语句如下:数据插入:insertinto表名〔列名〕value〔对应列的值〕数据修改语句如下:数据修改:update表名set列名=表达式〔where条件〕数据删除语句如下:数据删除:delete〔from〕{表名|视图名}〔where子句〕17.4创建数据库在前面的学习中,读者已经对数据库编程的基本知识有了一些基本介绍。在学习在Java中进行数据库操作之前,首先来学习一下如何创建数据库。这里以Access数据库和SQLServer数据库为例。17.4.1创建Access数据库学习如何使用JDBC进行数据库开发之前,首先需要建立一个数据库。本节使用的是非常简单易用的Access创建的数据库。例如创建一个记录学生信息的数据库,如表17-1所示。表17-1学生信息表表名字段名字段类型字段含义备注studentsid整数数值学生编号sid字段为主键sname字符串文本学生姓名sage整数数值学生年龄stel字符串文本联系电话同时,为了方便后面示例程序的运行,在表中插入了一些示例数据,如图17-1所示。图17-1示例数据本节只是介绍了本章所使用Access数据库的表结构与数据信息,因为Access数据库非常容

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

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

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

×
保存成功