您好,欢迎访问三七文档
应用JDBC进行数据库连接2本章目标前言了解JDBC的概念及用途JDBC数据库设计方法了解JDBC驱动程序类型理解JDBC程序的结构运用JDBC进行数据库编程3前言对于那些相对独立的软件供应商而言,经常要为每一个DBMS编写一个版本的应用程序,或者为每个要访问的DBMS编写针对DBMS的代码。这就意味着,大量的资源都耗在了编写和维护DB的访问上,更不用说应用程序了。此时应用程序的评价标准不再是质量,而是它能否在给定的DBMS中访问数据库。4前言这就需要开放的数据库连接,就是人们需要用一种新的方法来访问不同的数据库。为此,在系统中必须广泛使用中间件技术,以隐藏各种复杂性,屏蔽各种系统之间的差异。ODBC(OpenDataBaseConnectivity)技术和JDBC(JavaDataBaseConnectivity)技术就是这种优秀的中间件技术。5前言-中间件技术使用中间件技术可以使应用程序开发者不需关心特定环境的底层细节;通过中间件访问数据库,有关代码不依赖于某一具体数据库及其所在平台,从而将更多精力集中在功能的设计,所得到的应用软件也易于移植和升级。6前言-中间件的作用中间件的作用是保证网络中各部件(软件和硬件)之间透明地连接,即隐藏网络部件的异构性,尤其保证不同网络、不同DBMS和某些访问语言的透明性,即下面三个透明性。①网络透明性:能支持所有类型的网络。②服务器透明性:不管服务器上的DBMS是何种型号(ORACLE、SYBASE、DB2等),一个好的中间件都能通过标准的SQL语言与不同DBMS上的SQL语言连接起来。7前言-中间件的作用③语言透明性:客户机可用任何开发语言进行发送请求和接受回答,被调用的功能应该像语言那样也是独立的。在客户机和服务器之间传递查询及其结果是中间件最为基本的功能。中间件通常通过定义自己统一的数据模型而使不同数据库之间的数据转化问题隐藏起来,从而使应用软件开发界面透明化。8前言-数据库访问技术简介客户机/服务器应用程序数据库编程ODBCJDBC两个常用的API数据库执行SQL语句检索查询结果9数据库ODBC客户机/服务器GUI应用程序ODBC(开放式数据库连接)(Microsoft提供)插入删除修改应用程序编程接口查询10JDBCJDBC(Java数据库连接)(sun公司提供)Java应用程序编程接口Java应用程序数据库插入修改删除查询11JDBC概述JDBC是一种用于执行SQL语句的JavaAPI(有意思的是,JDBC本身是个商标名而不是一个缩写字;然而,JDBC常被认为是代表“Java数据库连接(JavaDatabaseConnectivity)”)。它由一组用Java编程语言编写的类和接口组成。JDBC为工具/数据库开发人员提供了一个标准的API,使他们能够用纯JavaAPI来编写数据库应用程序。有了JDBC,向各种关系数据库发送SQL语句就是一件很容易的事。JDBC是个“低级”接口,也就是说,它用于直接调用SQL命令。12JDBC与ODBC的对比ODBC(OpenDataBaseConnectivity)是微软倡导的、当前被业界广泛接受的、用于数据库访问的应用程序编程接口(API)JDBC的设计在思想上沿袭了ODBC,JDBC保持了ODBC的基本特性,也独立于特定数据库。使用相同源代码的应用程序通过动态加载不同的JDBC驱动程序,可以访问不同的DBMS。连接不同的DBMS时,各个DBMS之间仅通过不同的URL进行标识。13JDBC与ODBC的对比与ODBC一样,JDBC也支持在应用程序中同时建立多个数据库连接,采用JDBC可以很容易地用SQL语句同时访问多个异构的数据库,为异构的数据库之间的互操作奠定基础。14JDBC与ODBC的对比但是,JDBC除了具有ODBC的上述相似特点外,更具有对硬件平台、操作系统异构性的支持。这主要是因为ODBC使用的是C语言,而JDBC使用的是Java语言。Java语言具有与平台无关、移植性强、安全性高、稳定性好、分布式、面向对象等众多优点,而JDBC确保了“100%纯Java”的解决方案,利用Java的平台无关性,JDBC应用程序可以自然地实现跨平台特性,因而更适合于Internet上异构环境的数据库应用。15JDBC与ODBC的对比此外,JDBC驱动程序管理器是内置的,驱动程序本身也可通过Web浏览器自动下载;而ODBC驱动程序管理器和ODBC驱动程序必须在每台客户机上分别安装、配置。Java可以使用ODBC,但最好是在JDBC的帮助下以JDBC-ODBC桥的形式使用.ODBC不适合直接在Java中使用,因为它使用C语言接口。从Java调用本地C代码在安全性、实现、坚固性和程序的自动移植性方面都有许多缺点。16JDBC的用途简单地说,JDBC可做三件事:与数据库建立连接,发送SQL语句,处理结果。17JDBC的用途下列代码段给出了以上三步的基本示例://与数据库建立连接Connectioncon=DriverManager.getConnection(jdbc:odbc:wombat,login,password);Statement//使用Statement执行SQL语句stmt=con.createStatement();ResultSetrs=stmt.executeQuery(SELECTa,b,cFROMTable1);//处理结果while(rs.next()){intx=rs.getInt(a);Strings=rs.getString(b);floatf=rs.getFloat(c);}18JDBC数据库设计方法(1)Java应用程序(application)JDBC客户机DBMSDB服务器DBMS专用协议JDBC两层应用模型19JDBC数据库设计方法(2)Web服务器JDBC应用服务器DBMSDB服务器DBMS专用协议Java小应用程序(applet)客户机HTTPRMI调用JDBC三层应用模型业务逻辑中间层20JDBC驱动程序的类型JDBC驱动程序的类型JDBC-ODBC桥驱动程序及ODBC驱动程序本地API部分Java驱动程序JDBC-Net纯Java驱动程序本地协议纯Java驱动程序21JDBC-ODBC桥驱动程序及ODBC驱动(类型1):JDBC-ODBC桥接驱动程序。其底层通过ODBC(OpendatabasConnectivity)驱动程序来连接数据库。本地API部分Java驱动程序(类型2):本地API-部份用Java来编写的驱动程序。此种方式先将JDBC函数调用转换成数据库客户端函数库的API(位于客户端计算机),然后与数据库相连。JDBC-Net纯Java驱动程序(类型3):JDBC网络纯Java驱动程序。首先JDBC驱动程序会将JDBC函数调用解释成与数据库无关的网络通信协议,经过中介服务器的第二次解析,最后才转换成相对应的数据库通信协议.本地协议纯Java驱动程序(类型4)本地协议纯Java驱动程序。这种驱动程序将JDBC调用直接转换为DBMS所使用的网络协议。22JDBC体系结构3-1Java程序JDBC驱动程序数据库SQL命令结果23JDBC体系结构3-2应用层DriverStatementResultSetConnection各接口驱动层24JDBC体系结构3-3数据库25java.sql包3-1接口名说明Connection此接口表示与数据的连接Statement此接口用于执行SQL语句并将数据检索到ResultSet中PreparedStatement此接口是Statement的子接口此接口用于执行预编译的SQL语句CallableStatement此接口是PreparedStatement的子接口ResultSet此接口表示了查询出来的数据库数据结果集26java.sql包3-2类名说明DriverManager此类用于加载和卸载各种驱动程序并建立与数据库的连接Date此类包含将SQL日期格式转换成Java日期格式的各种方法Time此类用于表示时间TimeStamp此类通过添加纳秒字段为时间提供更高的精确度27java.sql包3-3SQLException/***fooBar*/publicvoidfoobar()throwsSQLException{……thrownewSQLException(“刚引发了一个SQLException”);}……try{fooBar();}catch(SQLExceptionex){System.out.println(“已捕获一个SQLException异常!”);System.out.println(“消息:“+ex.getMessage());System.out.println(“错误代码:“+ex.getErrorCode());}…调用fooBar28JDBC程序访问数据库的步骤2-1开始导入java.sql包加载并注册驱动程序创建一个Connection对象创建一个Statement对象执行语句关闭ResultSet对象关闭Statement对象关闭连接结束使用ResultSet对象查询添加删除修改29Friends表的结构JDBC程序访问数据库的步骤2-2它演示访问数据库的各个步骤在执行示例1中的程序之前,Mysql中应该存在一个名为friends的表演示:示例1列名称数据类型名称Varchar(50)地址Varchar(50)电话Char(20)入职日期Datetime工资Int30/**©2007wuxiNIIT*版权所有*/importjava.sql.SQLException;importjava.sql.Connection;importjava.sql.DriverManager;importjava.sql.Statement;importjava.sql.ResultSet;/**这个类演示访问数据库需遵循的各个步骤.*@version1.0,2007年7月2日*@author*/classJdbctest{/**构造方法*/protectedJdbctest(){}importjava.sql.*31/**这是main方法.*/publicstaticvoidmain(String[]args){try{Class.forName(sun.jdbc.odbc.JdbcOdbcDriver);}catch(ClassNotFoundExceptionce){System.out.println(ce);}try{Stringurl=jdbc:odbc:test;Connectioncon=DriverManager.getConnection(url);Statements=con.createStatement();ResultSetrs=s.executeQuery(select*fromfriends);while(rs.next()){System.out.print(rs.getString(1)+\t);System.out.print(rs.getString(2)+\t);System.out.print(rs.getInt(3)+\t);System.out.print(rs.getDate(4)+\t);System.out.println();}rs.close();s.close();con.close();}catch(SQLExceptionce){System.out.println(ce);}}}32步骤1-导入包导入包:Importjava.sql.*;33步骤2-加载(注册)JDBC驱动程序2-1加载JDBC驱动程序通常有下列两种方法:(1)使用Class.forName()语法:Class.forName(驱动程序名称);例如:加载jdbc-odbc驱动程序,class.forName(sun.jdbc.od
本文标题:JDBC
链接地址:https://www.777doc.com/doc-3559033 .html