1、jAVA2jAVA2程序设计基础第十程序设计基础第十三章三章13.1 JDBC简介 JDBC(Java Database Connectivity)是是Java的一个标准的一个标准SQL数据数据库访问接口,它为数据库应用开发人员、数据库前台工具开发人员提库访问接口,它为数据库应用开发人员、数据库前台工具开发人员提供一种标准的应用程序设计接口。开发人员只需使用供一种标准的应用程序设计接口。开发人员只需使用JDBC提供的类,提供的类,调用这些类的方法,即可对数据库进行访问,而无需关心所使用的具调用这些类的方法,即可对数据库进行访问,而无需关心所使用的具体是什么数据库系统。也就是说,开发人员可以很方
2、便地将体是什么数据库系统。也就是说,开发人员可以很方便地将 SQL语语句传送给几乎任何一种数据库去执行并返回结果句传送给几乎任何一种数据库去执行并返回结果,而不必写一段代,而不必写一段代码访问码访问 Sybase,写另一段代码访问,写另一段代码访问 Oracle,再写一段代码访问,再写一段代码访问SQL Server。13.2 建立与数据库系统的连接 当前的主流数据库系统有:Oracle,Sybase,Informix,InterBase,IBM DB2,Microsoft SQL Server,Borland DataStore和MySQL等,它们基本的共同特点是支持大规模数据的存储与访问,
3、功能强大,是那些小型数据库系统(如Microsoft Access)所不可比拟的。13.2.1 建立与Oracle的连接13.2.2 建立与Microsoft SQL Server的连接13.2.1 建立与Oracle的连接 若若Oracle的版本为的版本为8.1.x,则在,则在Oracle的安装目录下的的安装目录下的Ora81jdbclib(其中其中Ora81目录随目录随Oracle版本的不同而不同版本的不同而不同)子目录下子目录下可以找到可以找到Oracle版本自带的版本自带的JDBC驱动程序文件,但这个驱动程序是针对驱动程序文件,但这个驱动程序是针对Oracle版本面世时的版本面世时的J
4、DK版本的,如版本的,如Oracle 8.1.x中自带的驱动程序就是针中自带的驱动程序就是针对对JDK 1.2的,不一定适合于所有读者的机器。某些读者的机器中的的,不一定适合于所有读者的机器。某些读者的机器中的JDK可能是可能是1.3或者或者1.4版本的,此时就需要下载相应的版本的,此时就需要下载相应的JDBC驱动程序。读者可驱动程序。读者可以在以下地址找到以在以下地址找到Oracle的纯的纯Java的的JDBC驱动程序的下载链接:驱动程序的下载链接:http:/ 建立与Microsoft SQL Server的连接 读者可以在以下地址下载读者可以在以下地址下载 Microsoft SQL S
5、erver 2000 的纯的纯 Java 的的JDBC驱动程序:驱动程序:http:/ Server 2000的的JDBC驱动程序。驱动程序。下载完毕后双击下载完毕后双击setup.exe文件,一路单击文件,一路单击next按钮即可完成安装。其按钮即可完成安装。其默认的安装路径为默认的安装路径为C:Program FilesMicrosoft SQL Server 2000 Driver for JDBC,在其子目录,在其子目录lib下的下的3个个jar文件就是文件就是SQL Server 2000的的JDBC驱驱动程序的核心文件,它们是动程序的核心文件,它们是msbase.jar、mssql
6、server.jar和和msutil.jar,将,将这这3个文件的完整路径按照个文件的完整路径按照13.2.1小节介绍的方法写入环境变量中即可。小节介绍的方法写入环境变量中即可。返回13.3 访问数据库 访问数据库是数据库应用中的重点 ,也是数据库应用最基本的目的。而访问数据库最基本的问题有两个,一是如何向数据库提交SQL语句以便数据库执行;二是如何操作从数据库返回的结果 。JDBC通过两个类Statement和ResultSet来完成这两项工作。13.3.2 ResultSet13.3.1 Statement13.3.1 Statement 用于向数据库提交用于向数据库提交SQL语句以便数据
7、库执行的类总共有语句以便数据库执行的类总共有3个,它们个,它们分别是分别是 Statement 、PreparedStatement 和和 CallableStatement,其中,其中PreparedStatement 继承自继承自 Statement,而,而 CallableStatement 继承自继承自PreparedStatement。Statement 用于向数据库提交简单的不带参数的用于向数据库提交简单的不带参数的SQL语句,数据库对于语句,数据库对于Statement提交的每一条提交的每一条 SQL语句都会进行一次语句都会进行一次编译之后再执行,对于被反复执行的编译之后再执行,
8、对于被反复执行的SQL语句,这样做显然效率较低。语句,这样做显然效率较低。PreparedStatement用于向数据库提交带参数用于向数据库提交带参数(也可以不带也可以不带)的预编译的预编译SQL语句,语句,PreparedStatement会对提交的会对提交的SQL语句进行一次预编译,语句进行一次预编译,将预编译之后的结果提交给数据库,数据库对于将预编译之后的结果提交给数据库,数据库对于PreparedStatement提提交的交的SQL语句,若发现其在近期已执行过,则不会再进行编译,而是直语句,若发现其在近期已执行过,则不会再进行编译,而是直接执行,从而大大提高了性能。接执行,从而大大提高了性能。CallableStatement用于向数据库提交执用于向数据库提交执行存储过程的请求。行存储过程的请求。返回13.4 上 机 指 导 在本次上机指导中,将给出一个数据库应用的综合实例,针对前面几节中的内容进行实际上机练习,目的是让读者了解如何构建一个完整的数据库应用,并进一步熟悉连接并访问数据库的相关操作 。通过理解该例 ,读者将有能力完成实际的数据库应用。