Java的数据库连接编程(JDBC)技术

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

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

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

资源描述

Java的数据库连接编程(JDBC)技术[本讲的知识要点]:JDBC、JDBC的工作原理,访问数据库的方法、Statement、PreparedStatement、CallableStatement,ResultSet等对象的编程使用9.1基本知识9.1.1JDBC:JavaDataBaseConnectivity(Java数据库连接技术),它是将Java与SQL结合且独立于特定的数据库系统的应用程序编程接口(API--它是一种可用于执行SQL语句的JavaAPI,即由一组用Java语言编写的类与接口所组成)。有了JDBC从而可以使Java程序员用Java语言来编写完整的数据库方面的应用程序。另外也可以操作保存在多种不同的数据库管理系统中的数据,而与数据库管理系统中数据存储格式无关。同时Java语言的与平台的无关性,不必在不同的系统平台下编写不同的数据库应用程序。9.1.2JDBC设计的目的(1)ODBC:微软的ODBC是用C编写的,而且只适用于Windows平台,无法实现跨平台地操作数据库。(2)SQL语言:SQL尽管包含有数据定义、数据操作、数据管理等功能,但它并不是一个完整的编程语言,而且不支持流控制,需要与其它编程语言相配合使用。(3)JDBC的设计:由于Java语言具有健壮性、安全、易使用并自动下载到网络等方面的优点,因此如果采用Java语言来连接数据库,将能克服ODBC局限于某一系统平台的缺陷;将SQL语言与Java语言相互结合起来,可以实现连接不同数据库系统,即使用JDBC可以很容易地把SQL语句传送到任何关系型数据库中。(4)JDBC设计的目的:它是一种规范,设计出它的最主要的目的是让各个数据库开发商为Java程序员提供标准的数据库访问类和接口,使得独立于DBMS的Java应用程序的开发成为可能(数据库改变,驱动程序跟着改变,但应用程序不变)。9.1.3JDBC的主要功能:(1)创建与数据库的连接;(2)发送SQL语句到任何关系型数据库中;(3)处理数据并查询结果。编程实例:try{Class.forName(sun.jdbc.odbc.JdbcOdbcDriver);//(1)创建与数据库的连接Connectioncon=DriverManager.getConnection(jdbc:odbc:DatabaseDSN,Login,Password);Statementstmt=con.createStatement();ResultSetrs=stmt.executeQuery(select*fromDBTableName);//(2)发送SQL语句到数据库中while(rs.next()){Stringname=rs.getString(Name);//(3)处理数据并查询结果。intage=rs.getInt(age);floatwage=rs.getFloat(wage);}rs.close();//(4)关闭stmt.close();con.close();}catch(SQLExceptione){System.out.println(SQLState:+e.getSQLState());System.out.println(Message:+e.getMessage());System.out.println(Vendor:+e.getErrorCode());}9.1.4JDBC与ODBC的对比,从而体会JDBC的特点(1)ODBC是用C语言编写的,不是面向对象的;而JDBC是用Java编写的,是面向对象的。(2)ODBC难以学习,因为它把简单的功能与高级功能组合在一起,即便是简单的查询也会带有复杂的任选项;而JDBC的设计使得简单的事情用简单的做法来完成。(3)ODBC是局限于某一系统平台的,而JDBC提供Java与平台无关的解决方案。(4)但也可以通过Java来操作ODBC,这可以采用JDBc-ODBC桥接方式来实现(因为Java不能直接使用ODBC,即在Java中使用本地C的代码将带来安全缺陷)。9.1.5JDBC驱动程序的类型:目前比较常见的JDBC驱动程序可分为以下四个种类:(1)JDBC-ODBC桥加ODBC驱动程序JavaSoft桥产品利用ODBC驱动程序提供JDBC访问。注意,必须将ODBC二进制代码(许多情况下还包括数据库客户机代码)加载到使用该驱动程序的每个客户机上。因此,这种类型的驱动程序最适合于企业网(这种网络上客户机的安装不是主要问题),或者是用Java编写的三层结构的应用程序服务器代码。JDBC-ODBC桥接方式利用微软的开放数据库互连接口(ODBCAPI)同数据库服务器通讯,客户端计算机首先应该安装并配置ODBCdriver和JDBC-ODBCbridge两种驱动程序。(2)本地API这种类型的驱动程序把客户机API上的JDBC调用转换为Oracle、Sybase、Informix、DB2或其它DBMS的调用。注意,象桥驱动程序一样,这种类型的驱动程序要求将某些二进制代码加载到每台客户机上。这种驱动方式将数据库厂商的特殊协议转换成Java代码及二进制类码,使Java数据库客户方与数据库服务器方通信。例如:Oracle用SQLNet协议,DB2用IBM的数据库协议。数据库厂商的特殊协议也应该被安装在客户机上。(3)JDBC网络纯Java驱动程序这种驱动程序将JDBC转换为与DBMS无关的网络协议,之后这种协议又被某个服务器转换为一种DBMS协议。这种网络服务器中间件能够将它的纯Java客户机连接到多种不同的数据库上。所用的具体协议取决于提供者。通常,这是最为灵活的JDBC驱动程序。有可能所有这种解决方案的提供者都提供适合于Intranet用的产品。为了使这些产品也支持Internet访问,它们必须处理Web所提出的安全性、通过防火墙的访问等方面的额外要求。几家提供者正将JDBC驱动程序加到他们现有的数据库中间件产品中。这种方式是纯Javadriver。数据库客户以标准网络协议(如HTTP、SHTTP)同数据库访问服务器通信,数据库访问服务器然后翻译标准网络协议成为数据库厂商的专有特殊数据库访问协议(也可能用到ODBCdriver)与数据库通信。对Internet和Intranet用户而言这是一个理想的解决方案。Javadriver被自动的,以透明的方式随Applets自Web服务器而下载并安装在用户的计算机上。(4)本地协议纯Java驱动程序这种类型的驱动程序将JDBC调用直接转换为DBMS所使用的网络协议。这将允许从客户机机器上直接调用DBMS服务器,是Intranet访问的一个很实用的解决方法。这种方式也是纯Javadriver。数据库厂商提供了特殊的JDBC协议使Java数据库客户与数据库服务器通信。然而,将把代理协议同数据库服务器通信改用数据库厂商的特殊JDBCdriver。这对Intranet应用是高效的,可是数据库厂商的协议可能不被防火墙支持,缺乏防火墙支持在Internet应用中会存在潜在的安全隐患。9.2JDBC的工作原理JDBC的设计基于X/OpenSQLCLI(调用级接口)这一模型。它通过定义出一组API对象和方法以用于同数据库进行交互。在Java程序中要操作数据库,一般应该通过如下几步(利用JDBC访问数据库的编程步骤):(1)加载连接数据库的驱动程序Class.forName(sun.jdbc.odbc.JdbcOdbcDriver);(2)创建与数据源的连接Stringurl=jdbc:odbc:DatabaseDSN;Connectioncon=DriverManager.getConnection(url,Login,Password);(3)查询数据库:创建Statement对象并执行SQL语句以返回一个ResultSet对象。Statementstmt=con.createStatement();ResultSetrs=stmt.executeQuery(select*fromDBTableName);(4)获得当前记录集中的某一记录的各个字段的值Stringname=rs.getString(Name);intage=rs.getInt(age);floatwage=rs.getFloat(wage);(5)关闭查询语句及与数据库的连接(注意关闭的顺序先rs再stmt最后为con)rs.close();stmt.close();con.close();9.3JDBC的结构JDBC主要包含两部分:面向Java程序员的JDBCAPI及面向数据库厂商的JDBCDriveAPI。(1)面向Java程序员的JDBCAPI:Java程序员通过调用此API从而实现连接数据库、执行SQL语句并返回结果集等编程数据库的能力,它主要是由一系列的接口定义所构成。java.sql.DriveManager:该接口主要定义了用来处理装载驱动程序并且为创建新的数据库连接提供支持。java.sql.Connection:该接口主要定义了实现对某一种指定数据库连接的功能。java.sql.Statement:该接口主要定义了在一个给定的连接中作为SQL语句执行声明的容器以实现对数据库的操作。它主要包含有如下的两种子类型。java.sql.PreparedStatement:该接口主要定义了用于执行带或不带IN参数的预编译SQL语句。java.sql.CallableStatement:该接口主要定义了用于执行数据库的存储过程的雕用。java.sql.ResultSet:该接口主要定义了用于执行对数据库的操作所返回的结果集。(2)面向数据库厂商的JDBCDriveAPI:数据库厂商必须提供相应的驱动程序并实现JDBCAPI所要求的基本接口(每个数据库系统厂商必须提供对DriveManager、Connection、Statement、ResultSet等接口的具体实现),从而最终保证Java程序员通过JDBC实现对不同的数据库操作。9.4数据库应用的模型(1)两层结构(C/S):在此模型下,客户端的程序直接与数据库服务器相连接并发送SQL语句(但这时就需要在客户端安装被访问的数据库的JDBC驱动程序),DBMS服务器向客户返回相应的结果,客户程序负责对数据的格式化。client端ODBC/JDBCServer端(DBMS)或数据库专用协议主要的缺点:受数据库厂商的限制,用户更换数据库时需要改写客户程序;受数据库版本的限制,数据库厂商一旦升级数据库,使用该数据库的客户程序需要重新编译和发布;对数据库的操作与处理都是在客户程序中实现,使客户程序在编程与设计时较为复杂。(2)三(或多)层结构(B/S):在此模型下,主要在客户端的程序与数据库服务器之间增加了一个中间服务器(可以采用C++或Java语言来编程实现),隔离客户端的程序与数据库服务器。客户端的程序(可以简单为通用的浏览器)与中间服务器进行通信,然后由中间服务器处理客户端程序的请求并管理与数据库服务器的连接。客户端程序HTTPRMICORBA中间服务器JDBC数据库服务器9.5通过JDBC实现对数据库的访问(1)引用必要的包importjava.sql.*;//它包含有操作数据库的各个类与接口(2)加载连接数据库的驱动程序类为实现与特定的数据库相连接,JDBC必须加载相应的驱动程序类。这通常可以采用Class.forName()方法显式地加载一个驱动程序类,由驱动程序负责向DriverManager登记注册并在与数据库相连接时,DriverManager将使用此驱动程序。Class.forName(sun.jdbc.odbc.JdbcOdbcDriver);注意:这条语句直接加载了sun公司提供的JDBC-ODBCBridge驱动程序类。(3)创建与数据源的连接Stringurl=jdbc:odbc:DatabaseDSN;Connectioncon=DriverManager.getConne

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

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

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

×
保存成功