版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
15.1JDBC概述
——5.1.1什么是JDBC
JDBC是Java的开发者——Sun的Javasoft公司制定的Java数据库连接(JavaDataBaseConnectivity)技术的简称,是java语言访问数据库的一个规范,本质上是一个面向对象的JavaAPI(ApplicationProgrammingInterface应用程序接口),实现各种常用数据库提供无缝连接。JDBC对应用开发人员、数据库前台工具开发人员而言是API,使开发人员可以用纯Java语言编写完整的数据库应用程序,降低了开发人员的工作量;同时它为数据库厂商及第三方中间件厂商实现与数据库的连接提供了一个标准体系结构,让厂商可以为自己的数据库产品提供JDBC驱动程序,从而提高了Java程序访问数据库的效率。JDBC的主要功能包括以下几点:与数据库建立连接。发送SQL语句。处理数据库返回结果。25.1.2JDBC的体系结构使用JDBC来完成对数据库的访问包括以下四个主要组件:Java的应用程序、JDBC驱动器管理器、JDBC驱动程序和数据源。而JDBC的结构大致可分为JDBCAPI、JDBC驱动管理者和JDBC驱动程序三个部分,如图5-1所示。应用程序数据库(DBMS)JDBC驱动程序管理器JDBC驱动程序JDBCAPI35.1.2JDBC的体系结构各部分的功能说明:(1)应用程序:用于发送或者接收数据。(2)JDBCAPI:屏蔽不同的数据库驱动程序之间的差别,提供一个标准的、纯Java
的数据库程序设计接口,为在Java中访问任意类型的数据库提供技术支持。(3)JDBC驱动程序管理器:为应用程序装载数据库驱动程序。(4)JDBC驱动程序:提供数据源和应用程序之间的接口,与具体的数据库相关,用于向数据库提交SQL请求。(5)数据源:与SQL兼容的数据库。45.1.3JDBC驱动程序所谓JDBC驱动程序,就是各个数据库厂商根据JDBC规范开发的JDBC实现类,目前比较常见的JDBC驱动程序可分为以下四种类型:JDBC-ODBC桥
实质上就是利用ODBC驱动程序提供JDBC访问。JDBC本地API桥大部分数据库厂商提供与他们的数据库产品进行通信所需要的API,这些API往往用C语言编写,依赖于具体的平台,本地API桥通过JDBC驱动程序将应用程序中的调用请求转化为本地API调用,由本地API与数据库通信,数据库处理完请求将结果通过本地API返回,进而返回给JDBC驱动程序,JDBC驱动程序将返回的结果转化为JDBC标准形式,再返回给客户程序。55.1.3JDBC驱动程序JDBC网络纯Java驱动程序
JDBC先把对数局库的访问请求传递给网络上的中间件服务器,中间件服务器再把请求翻译为符合数据库规范的调用,再把这种调用传给数据库服务器。由于大部分功能实现都在服务器端,所以这种驱动可以设计得很小,可以非常快速地加载到内存中。但是,这种驱动在中间件层仍然需要配置其他数据库驱动程序。本地协议纯Java驱动程序
这种类型的驱动程序将JDBC调用直接转换为DBMS所使用的网络协议。这种驱动与数据库建立直接的套接字连接,采用具体数据库厂商的网络协议把JDBCAPI调用转换为直接网络调用,也就是允许从客户机机器上直接调用DBMS服务器,是Intranet访问的一个很实用的解决方法。由于这种类型的驱动程序可以直接和数据库服务器通信,且完全由Java实现,因此实现了平台独立性。65.2JDBCAPI简介
——5.2.1什么是JDBCAPI
JDBC的核心是为用户提供JavaAPI类库,让用户能够创建数据库连接、执行SQL语句、检索结果集、访问数据库元数据。JDBCAPI实质上就是为java语言访问数据设计的一组应用程序接口,由一组用Java语言编写的类和接口组成,可以为多种关系数据库提供统一访问,如:Sybase、Oracle、SqlServer。JDBCAPI包含在JDK中,被分散存入了两个包:java.sql:用来连接数据源的类和接口,处理将数据提取到结果集中的SQL语句,插入、更新或删除数据,执行存储过程。javax.sql:用于像连接池和分布式事务这类的高级服务器端处理特性的类和接口。根据JDBCAPI对于程序开发人员和数据库厂商的不同意义,可以把JDBCAPI接口分为两个层次:一个是面向程序开发人员的JDBCAPI,另一个是底层的JDBCDriverAPI。75.2.1什么是JDBCAPIJDBCAPI中定义的类和接口比较多,下面列出了一些常用的类与接口:java.sql.DriverManagerjava.sql.Driverjava.sql.Connectionjava.sql.Statementjava.sql.ResultSetjava.sql.SQLException85.2.2JDBCAPI的接口Java接口实际上是常量和方法的集合。通过接口机制可以使不同层次、甚至互不相关的类具有相同的行为。接口机制具有比多重继承更简单、更灵活的特点,并且具有更强的功能。与类不同的是一个接口可以有多个父接口,用逗号隔开;而一个类只能有一个父类,子接口继承父接口中所有的常量和方法。Java接口主要作用如下:通过接口可以实现不相关类的相同行为,而不需要考虑这些类之间的层次关系;通过接口可以指明多个类需要实现的方法;通过接口可以了解对象的交互界面,而不需要了解对象所对应的类。95.2.2JDBCAPI的接口java.sql.Driver接口Driver接口是每个驱动程序类必须实现的接口。每种数据库的驱动程序都应该提供一个实现java.sql.Driver接口的类,简称Driver类,在加载某一驱动程序的Driver类时,应该创建自己的实例并向java.sql.DriverManager类注册该实例。当创建一个连接时,DriverManager驱动程序管理器将试图使用所能找到的驱动程序建立与URL统一资源定位器的连接。Driver接口的常用方法见表5-1。java.sql.Connection接口Connection接口用来与特定数据源建立连接,是进行其他数据库访问操作的前提。只有在成功建立连接的前提下,SQL语句才可能被传递到数据库,最终被执行并返回结果。Connection接口的常用方法见表5-2。105.2.2JDBCAPI的接口java.sql.Statement接口Statement接口用于在已经建立的连接的基础上向数据库发送SQL语句并返回结果。实际上有3种Statement对象:Statement、PreparedStatement(继承自Statement)和CallableStatement(继承自PreparedStatement)。它们都作为在给定连接上执行SQL语句的容器,每个都专用于发送特定类型的SQL语句:Statement对象用于执行不带参数的简单SQL语句;PreparedStatement对象用于执行带或不带IN参数的预编译SQL语句;CallableStatement对象用于执行对数据库已存储过程的调用。Statement接口提供了执行语句和获取结果的基本方法;PreparedStatement接口添加了处理IN参数的方法;而CallableStatement添加了处理OUT参数的方法。Statement接口的常用方法见表5-3。115.2.2JDBCAPI的接口java.sql.PreparedStstement接口PreparedStatement接口继承了Statement接口,但PreparedStatement语句中包含了经过预编译的SQL语句,因此可以获得更高的执行效率。此外,PreparedStatement与Statement不同支出在于它构造的SQL语句不是完整的语句,而需要在程序中进行动态设置,在PreparedStatement语句中可以包含多个用"?"代表的字段,在程序中可以利用setXXX方法设置该字段的内容,从而增强了程序设计的动态性及程序设计的灵活性。所以对于某些使用频繁的SQL语句,用PreparedStatement语句比用Statement具有明显的优势。PreparedStstement接口的常用方法见表5-4。125.2.2JDBCAPI的接口java.sql.CallableStatemet接口CallableStatement接口继承并扩展了PreparedStatement接口,用于执行数据库中的SQL存储过程。CallableStatement接口是PreparedStatement类的子类,存放在java.sql包中用
Connection接口的prepareCall方法创建。在使用该接口时可以通过PreparedStatement接口的setXXX方法来设置存储过程需要的IN参数,存储过程中的OUT参数可以使用CallableStatement接口中的getXXX方法来获取,其值在存储过程中的IN或OUT参数按其出现的先后排序从1开始。CallableStatement可以返回一个或多个ResultSet实例。处理多个ResultSet对象的方法是从Statement中继承来的。CallableStatement接口的常用方法见表5-5。135.2.2JDBCAPI的接口java.sql.ResultSet接口ResultSet接口提供访问ResultSet(结果集)的方法,可以使用ResultSet接口中的方法来获得结果集中的内容,它不仅提供了一套get方法对这些结果集中的数据进行访问,,还提供了很多移动指针(cursor,也译为光标)的方法。ResultSet接口的常用方法见表5-6。145.2.3JDBCAPI的类JDBCAPI中定义的类比较多,下面只对JDBCAPI常用的两个类进行介绍。(1)java.sql.DriverManager类在DriverManager类中提供了用于管理JDBC驱动程序的方法,作用于用户和驱动程序之间。它跟踪可用的驱动程序,并在数据库和相应驱动程序之间建立连接,另外,DriverManager类也处理诸如驱动程序登录时间限制及登录和跟踪消息的显示等事务。当DriverManager类进行初始化时,将使用系统的“jdbc.drivers”属性,DriverManager类会装载每一个找到的驱动类,可以在.hotjava\properties文件中设置jdbc.drivers属性设置查找驱动类的路径。在创建与数据库的连接时,DriverManager类将从已装载的驱动程序中选择一个合适驱动程序用于建立连接。DriverManager类的常用方法见表5-7。155.2.3JDBCAPI的类(2)java.sql.SQLException类SQLException类是java.lang.Exception类的子类。SQLException类提供处理访问数据库时的出错信息。一般来说一个SQLException对象可以为用户提供如下信息:错误描述字符串:该字符串作为JavaException消息,可以使用getMessage()方法来获取这个错误消息。SQLstate字符串:该字符串遵循XOPEN的SQLstate标准,在XOPEN的SQL标准中描述该字符串的值。可以使用getSQLState方法来获取该字符串。错误代码:由数据库厂商提供的错误代码,是一个整数值,可以使用getErrorCode()方法来获取该代码。与下一个错误的链接:有时程序运行过程中产生的错误不止一个。JDBC提供一个错误链接来保存所有产生的错误信息,可以使用getNextException()方法来获取下一个保存错误信息的SQLException对象。SQLException类的常用方法见表5-8。165.3连接数据库
——5.3.1JDBC连接数据库的一般过程
创建一个以JDBC连接数据库的程序,包含7个步骤:加载JDBC驱动程序提供JDBC连接的URL创建数据库的连接创建一个Statement执行SQL语句处理结果关闭JDBC对象
175.3.2案例一:JDBC-ODBC桥连接数据库【案例功能】通过JDBC-0DBC桥接方式连接SQLServer数据库。【案例目标】掌握JDBC连接数据库的一般过程,能运用JDBC-ODBC桥接方式连接数据库。【案例要点】JDBC-ODBC桥连接数据库的实施过程【案例步骤】(1)创建第5章源码文件夹ch05。(2)先建立一个ODBC数据源ClassDB,该数据源的默认数据库为ClassDB。(3)在ch05目录下编写test1.jsp源文件。页面运行效果如图5-7所示。185.3.3案例二:本地协议纯Java驱动程序连接数据库【案例功能】通过本地协议纯Java驱动的方式连接SQLServer数据库。【案例目标】掌握JDBC连接数据库的一般过程,能运用本地协议纯Java驱动的方式连接后台数据库。【案例要点】本地协议纯Java驱动的方式连接数据库的实施过程。【案例步骤】(1)到微软的官方网站下载MSSQLServerforJDBC的本地协议驱动程序。(2)安装该驱动程序。195.3.3案例二:本地协议纯Java驱动程序连接数据库(3)设置环境变量,将驱动程序路径加入CLASSPATH环境变量中。(4)在ch05目录下编写test2.jsp源文件页面运行效果如图5-8所示。205.4访问数据库对数据库的访问包括数据的查询操作和更新操作。在查询操作中可以通过结果集得到查询结果。数据的更新操作包括:记录的修改、插入和删除,表的创建和删除,表中列的增加和删除。215.4.1查询数据库在SQL中查询是通过select语句来完成的,通常执行SQL查询语句会返回一个ResultSet对象,使用该对象可将查询结果输出显示给用户。在JDBC中要执行查询语句可以通过执行一般查询、参数查询和存储过程三种方式,分别对应Statement、PrepareStatement和CallableStatement对象。一般查询
一般查询是没有参数的,使用Statement对象实现。一般查询的执行过程有以下几步:创建Statement对象选项设置执行查询语句关闭Statement对象
225.4.1查询数据库参数查询
参数查询的特点是可以接收查询参数,使用PreparedStatement对象实现。在准备好的SQL语句中指出需要的参数,再将该语句传递给数据库进行预编译,这样可得到较高的性能,适合于在需要多次执行相同查询语句时使用。
创建PreparedStatement对象可以使用Connection对象的prepareStatement()方法。存储过程
存储过程实际上是数据库中已经存在的SQL查询语句,执行相应的存储过程相当于是执行相应的SQL查询语句,使用CallableStatement对象实现。
创建CallableStatement对象可以使用Connection对象的prepareCall()方法。
235.4.2案例三:查询ClassDB数据库中的学生信息【案例功能】查询学生信息,并以表格形式显示在页面上。【案例目标】掌握查询数据库的一般过程,能运用Statement对象查询数据库。【案例要点】Statement对象查询数据库的实施过程。【案例步骤】(1)建立一个ODBC
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026文化空间面试题及答案
- (2026年)二手房买卖合同
- 阳江110千伏阳春润龙风电场一期接入系统工程环境影响报告表
- 2025-2026学年河北省保定市高碑店数学三年级第二学期期中预测试题含答案解析
- 2025-2026学年江门市蓬江区四年级数学第二学期期中综合测试试题(含答案)
- 西咸新区第一小学教育集团教师招聘笔试真题2025
- 宜春市大学生乡村医生专项计划招聘笔试真题2025
- 2026 年实习护士自我反思能力培养带教主题
- 2025-2026学年江苏省宿迁市宿豫区四年级数学第二学期期末调研模拟试题(含解析)
- 生鲜产品专用冷库短期租赁合同三篇
- 2026年秋统编版(新教材)道德与法治五年级上册(全册)分层作业及答案(附目录)
- 城市轨道交通站务员岗前能力评估考核试卷含答案
- 昆明市2025-2026学年数学三年级下学期期末综合测试试题(含答案解析)
- 医疗器械使用知情同意书范本
- 2026年房地产经纪人《房地产交易制度政策》考试真题(后附答案解析)
- 水利水电工程单元工程施工质量检验表与验收表(SLT631.5-2025)
- 施工现场设备、设施管理制度
- 言语治疗与兽医沟通障碍的干预技术模拟
- 安全应急装备产业发展研究报告(2025年)
- 2025-2026学年春季第二学期“1530”安全教育安排表(可打印版)
- 寺院用工合同范本
评论
0/150
提交评论