您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 广告经营 > JAVA课件 第13章 JDBC
《Java程序设计》JAVA程序设计语言第十三章JDBCJDBC连接数据库数据库是指长期存储在计算机内的、有组织的、可共享的数据集和1996年夏,Sun公司推出了Java数据库连接(JavaDatabaseConnectivity,JDBC)工具包的第一个版本。在Java中,程序与数据库的连接是通过JDBC(JavaDataBaseConnectivity)实现13.1JDBC概述JDBC是由一组驱动程序实现的Java接口,驱动程序负责从标准JDBC调用向支持的数据库所需要的具体调用转变。除了向开发者提供统一的独立于DBMS之外的框架,JDBC还提供了让开发者保持数据库厂家提供的特定功能的办法。13.1.1JDBC结构JDBC由两层组成,上面一层是JDBCAPI,下面一层是JDBC驱动程序API数据库Java应用程序JDBC驱动程序管理器JDBC/ODBC桥供应商提供的JDBC驱动程序ODBC驱动程序数据库JDBC驱动程序APIJDBCAPI1、Java应用程序Java程序主要包括Java应用程序和java小程序,主要是根据JDBC方法实现对数据库的访问和操作主要完成的任务包括:请求与数据库建立连接、向数据库发送SQL请求、为结果集定义存储应用和数据类型、查询结果、处理错误、控制传输、提交、关闭连接等操作2、JDBC管理器JDBC管理器提供了一个“驱动器管理器”,它能够动态管理和维护数据库查询所需要的所有驱动程序对象,实现Java程序与特定驱动程序的连接其主要任务包括:为特定数据库选择驱动程序、处理JDBC的初始化调用、为每个驱动程序提供JDBC功能的入口、为JDBC调用执行参数等3、驱动程序驱动程序处理JDBC方法,向特定数据库发送SQL请求,并为JAVA程序获取结果JDBC是独立于数据库管理系统的,每一个数据库都有自己的协议与客户机通信,JDBC利用数据库驱动程序来使用这些数据库引擎JDBC驱动程序由数据库和第三方软件商提供,程序中所使用的数据库系统不同,所需要的驱动程序也有所不同其任务包括:建立与数据库的连接、向数据库发送请求、翻译用户程序请求、将错误代码格式化成标准的JDBC错误代码4、数据库Java程序需要访问的数据库及其数据库管理系统JDBC-ODBCBridgeJDBC-NativeAPIBridgeJDBC-MiddlewarePureJDBCdriverODBCDriver数据库数据库数据库数据库特定驱动程序MiddlewareonnetserverJava应用程序JDBCAPIJDBCDriverManager13.1.2实现JDBC连接由于数据库技术发展的原因,各公司开发的SQL语言存在一定的差异当需要连接数据库并存取其中的数据时,需要选择适当类型的JDBC程序JDBC驱动程序包括:JDBC-ODBCBridge、JDBC-NativeAPIBridge、JDBC-Middleware、PureJDBCDriver1、JDBC-ODBCBridge此类驱动程序必须在计算机上事先安装ODBC驱动程序,然后通过JDBC-ODBCBridge的转换,将Java程序中使用的JDBCAPI转换成ODBCAPI,然后通过ODBC来从数据库中提取数据2、JDBC-NativeAPIBridge此类驱动程序必须在计算机上事先安装特定类型的驱动程序(类似ODBC),然后通过JDBC-NativeAPIBridge的转换,将Java程序中使用的JDBCAPI转换成NativeAPI,然后从数据库中提取数据3、JDBC-Middleware使用此类驱动程序,不需要在计算机上安装任何类型的附加软件,但是必须在安装数据库管理系统的服务器端加装中介软件,此软件会负责所有存取数据库时的必要转换4、PureJDBCDriver使用此类驱动程序时,不需要在客户端和服务器端加装任何软件,所有存取数据库的操作都直接由JDBC驱动程序完成13.2JDBC数据库访问流程在Java.sql中有4个主要的类可以实现数据存储。DriverManager负责加载和处理给定的JDBC驱动程序,Connection表示同一个特定数据库进行连接的对象,Statement是SQL语句的载体,ResultSet是结果集对象。13.2.1基本流程1.建立数据源这里所建立的数据源是指ODBC数据源,这一点并不是JDBC的要求,而是ODBC所必须的。当使用JDBC-ODBCBridge来建立连接时,必须先建立ODBC数据源。2.装入JDBC驱动程序要使用JDBC来访问数据库,首先必须加载JDBC驱动程序。加载驱动程序的操作非常简单,只需要一句代码。如果classname是jdbc.DriverXYZ,其代码写成:Class.forName(“jdbc.DriverXYZ”);3.建立连接与数据库建立连接的标准方法是调用方法DriverManger.getConnectionJDBC中URL的标准语法是:jdbc:subprotocol:subnamesubprotocol说明了使用哪种JDBC驱动程序,比如:若使用的是JDBC-ODBCBridge,就写为“odbc”,若使用的是Sybase的JDBC驱动程序,就写“Sybase”subname则为驱动程序提供了连接数据库所需要的一切信息,比如:jdbc:Sybase://jdbcstudy:4233/db_books,表示使用SybaseJDBC驱动程序,且连接安装在名为jdbcstudy的服务器的4233端口的db_books数据库中。4.执行SQL语句建立连接后,就能够向数据库发送SQL语句了。JDBC提供了Statement类来发送SQL语句,Statement类的对象用createStatement方法创建;SQL语句发送以后,返回的结果通常存放在一个ResultSet类的对象中,ResultSet可以看作是一个表,这个表中包含由SQL返回的列名和相应的值,ResultSet对象中维持了一个指向当前行的指针,通过一系列的getXXX方法,可以检索当前行的各个列,并显示出来。5.检索结果对Result对象进行处理之后,才能将查询结果显示给用户。Result对象包括一个由查询语句返回的一个表ResultSet,这个表中包含所有的查询结果。对Result对象的处理必须逐行进行,ResultSet.next方法使指针下移一行。6.关闭连接连接在对象使用完毕后,应当使用close()方法解除与数据库的连接,并关闭数据库。例如:con.close();13.2.2常用的JDBC类与方法Java.sql.DriverManager类:是JDBC管理器,负责管理JDBC驱动程序,跟踪可用的驱动程序并在数据库和相应驱动程序之间建立连接,其功能包括注册、加载、驱动程序,处理驱动程序登陆时间限制以及登陆和跟踪消息的显示等等Java.sql.Connection类:负责建立与指定数据库的连接Java.sql.Statement类:负责将sql命令传送给数据库,并将sql命令的执行结果返回Java.sql.PreparedStatement类:其对象可以代表一个预编译的sql语句,是statement接口的子接口,继承Statement对象的所有功能;且PreparedStatement类的对象的执行速度要快于Statement类的对象,可以将需要多次执行的sql语句创建为PreparedStatement对象Java.sql.ResultSet类:标是从数据库中返回的结果集,当使用Statement和PreparedStatement类提供executeQuery()方法时,会返回数据库的查询结果,并存放在ResultSet类对象中供我们使用1、java.sql.DriverManager(1)PublicstaticsynchronizedConnectiongetConnection(Stringurl)throwsSQLException:使用指定的数据库URL创建一个连接,使DriverManager从注册的JDBC驱动程序中选择适当的驱动程序,如果发生数据库访问异常,则抛出一个SQLException错误PublicstaticsynchronizedConnectiongetConnection(Stringurl,Propertiesinfo)throwsSQLException:使用指定的数据库URL和相关信息(用户名、密码等属性列表)来创建一个连接,使DriverManager从注册的JDBC驱动程序中选择适当的驱动程序,如果发生数据库访问异常,则抛出一个SQLException错误PublicstaticsynchronizedConnectiongetConnection(Stringurl,Stringuser,Stringpassword)throwsSQLException:使用指定的数据库URL和用户名、密码来创建一个连接,使DriverManager从注册的JDBC驱动程序中选择适当的驱动程序,如果发生数据库访问异常,则抛出一个SQLException错误java.sql.DriverManager(2)PublicstaticDrivergetDriver(Stringurl)throwsSQLException:定位给定URL下的驱动程序,让DriverManager从注册的JDBC驱动程序中选择一个适当的驱动程序,如果发生数据库访问异常,则抛出一个SQLException错误PublicstaticvoidderegisterDriver(Driverdriver)throwsSQLException:从DriverManager列表中删除指定的驱动程序,如果发生数据库访问异常,则抛出一个SQLException错误PublicstaticintgetLoginTimeout():用来获取连接数据库时驱动程序可以等待的最大时间,以秒为单位PublicstaticPrintStreamgetLogStream():用来获取DriverManager和所有驱动程序使用的日志PrintStream对象Publicstaticvoidprintln(Stringmessage):用来给当前JDBC日志流输出指定的消息2、Connection类(1)PublicStatementcreateStatement()throwsSQLException:用来创建Statement对象PublicStatementcreateStatement(intresultSetType,intresultSetConcurrecy)throwsSQLException:用来按指定参数创建Statement对象PublicDatabaseMetaDatagetMetaData()throwsSQLException:用来创建DatabaseMetaData对象,不同数据库系统拥有不同的特性,DatabaseMetaData类可以保存数据库的所有特性,并且还提供一系列成员方法获取数据库特性,如:数据库名称、JDBC驱动程序名、版本代号以及连接数据库的JDBCURLPublicPreparedStatementprepareStatement(Stringsql)throwsSQLException:用来创建PreparedStatement对象Connection类(2)Publicvoidcommit()throwsSQLException:用来提交对数据库执行添加、修改或删除纪录的操作PublicbooleangetAutoCommit()throwsSQLException:用来获取connection对象的Auto_Commit(自动提交)状态PublicbooleansetAutoCo
本文标题:JAVA课件 第13章 JDBC
链接地址:https://www.777doc.com/doc-3379822 .html