JDBC 原理 及api介绍

JDBC 概述

现在我们开发的应用程序,越来越多的要跟数据库打交道了。尤其是 B/S 应用程序,因为现在的网页基本上都是动态网页,动态网页就意味着,页面的信息是要经常发生变化的。而存储这些数据的载体,主要就是数据库。那我们就势必要掌握用应用程序操作数据库和其中的数据的方法。在Java 中,我们是使用JDBC 技术来实现应用程序操作数据库的。JDBC Java Data BaseConnectivity 的简称,意思是Java 数据库连接。它是用来连接数据库和操作数据库的一组API。无论是C/S 应用程序还是B/S 应用程序,我们都可以使用JDBC 来操作数据库。

JDBC 原理以及驱动程序的分类

1JDBC 原理

原来的 SUN 公司(现在是Oracle 公司)在开发JDBC API 时,将这些接口和类放在了两个包中,java.sql 包和javax.sql 包中。而主要的接口和类都是在java.sql 包中,javax 包叫做扩展包,javax.sql 包中有一些关于数据源、连接池和其他的一些扩展的接口和类。

JDBC 中最常用的几个接口和类是 DriverManager 类、Connection 接口、Statement 接口、

ResultSet 接口,DriverManager 这个类是管理驱动程序的,可以获得数据库连接对象。

JDBC的驱动程序是实现了JDBC API 接口的类由数据库厂商来提供,所以我们在使用JDBC 连接数据库的时候,需要导入数据库的驱动包,连接不同的数据库,需要导入不同的包。

而我们在编写Java 应用程序时,基本上不用太关心这些包中的类。我们只需要用JDBC

接口进行编程就可以了,也就是java.sql 包和javax.sql 包中的接口。这些接口的对象都是通过其他对象来获得的,我们不需要通过new 来创建它们。而这些对象的具体实现都是在驱动程序中实现的,是驱动程序类的对象。

2)驱动程序分类

JDBC 驱动有四种,常用的JDBC 驱动有两种。在个人开发与测试中,可以使用JDBC-ODBC

桥连方式,在生产型开发中,推荐使用纯Java 驱动方式。

使用纯Java 驱动方式进行直连的步骤:

1、下载数据库厂商提供的驱动程序包

2、将驱动程序包引入工程中

3、编程,通过纯Java 驱动方式与数据库建立连接

JDBC 编程步骤要使用 JDBC 连接和操作数据库,有一套固定的步骤。依照这些步骤,可以保证你正确的连接到数据库并且操作它。

第一步是注册驱动,Class.forName()方法将驱动程序类加载到虚拟机的内存中(过程及原理?)

第二步是获得数据库的连接,是使用DriverManager 类的getConnection()方法来获得的,(这些接口的对象都是通过其他对象来获得的,我们不需要通过new 来创建它们)

同时需要在参数中给出连接数据库的URL 和用户名、密码。这一步将得到一个数据库连接对象,是Connection 类型的。

第三步是用数据库连接对象获得一个Statement 对象,这个对象可以用来执行SQL 语句。

第四步就是用Statement 对象执行SQL 语句了。其实,说是用Statement 对象来执行SQL

还不够准确,因为SQL 语句只能被数据库来执行,Statement 只是负责发送SQL 和接收结果。但是不管是谁在执行,这一步都将执行SQL 语句。

第五步是处理执行结果,如果是更新的操作,可能是判断一下是否更新成功,如果是查询

的操作,可能就是输出查询结果等等。最后,一定要记得释放数据库的连接。因为数据库的连接是一个重量级的对象。如果是多用户并发访问的应用程序,比如B/S 应用程序,每个用户都是只连接但不释放,将不断耗费服务器的资源直至服务器down 机。

JDBC API 介绍

JDBC API 中主要定义了一些连接和操作数据库的接口,而具体的类却很少。这是因为,

在开发Java API 的时候,不可能让JDBC 连接某个具体的数据库,而只能确定一组规范。而连接具体数据库的实现,应该由数据库的厂商来做。通过统一的JDBC 规范,使得我们在连接各种数据库的时候,编码的方式是一样的,这样更利于代码的复用和移植。

从上面JDBC 编程步骤中可以看出,使用JDBC 操作数据库需要依赖几个主要的JDBC API

接下来介绍这几个JDBC API 的使用(大家也可以结合帮助文档查看):

1DriverManager 类是用来管理数据库驱动的,java.sql 包中大多数都是接口,这是为

数不多的类之一。它是非常常用的一个类,最主要的功能就是获得数据库的连接,它定义了三个连接数据库的方法,差别在参数的数量上。三个参数的getConnection()方法是最常用的。

三个参数分别是数据库的URL、用户名和密码。

返回类型 方法签名 说明

static Connection getConnection(String url) 试图建立到给定数据库

URL 的连接

static Connection getConnection(String url,

Properties info)

试图建立到给定数据库

URL 的连接

static Connection getConnection(String url,

String user, String password)

试图建立到给定数据库

URL 的连接

2java.sql.Connection 接口表示应用程序与数据库的连接对象。由数据库厂商来实现,获得Connection 对象的方法(两个获得对象的原理?)

是通过DriverManager 类的getConnection()方法。通过

Connection 对象, 我们可以获得操作数据库的Statement PreparedStatement

CallableStatement 等对象。这些对象是用来执行SQL 和存储过程的,我们会在后面讲解到。

3Statement 接口的对象是用来执行SQL 语句的,而且是执行静态的SQL 语句。所谓的静态SQL 语句,是指SQL 语句由一个固定的SQL 字符串确定,运行期不能修改参数。

返回类型 方法签名 说明

int executeUpdate(

String sql)

执行给定 SQL 语句,该语句可能为 INSERTUPDATE DELETE

语句,或者不返回任何内容的 SQL 语句(如 SQL DDL 语句)

ResultSet executeQuery(

String sql)

执行给定的 SQL 语句,该语句返回单个 ResultSet 对象

void close() 立即释放此 Statement 对象的数据库和 JDBC 资源,而不是等

待该对象自动关闭时发生此操作

4ResultSet 接口用来表示查询结果集。当我们调用Statement executeQuery()方法

时,就会得到一个ResultSet 的对象ResultSet 对象中包含根据查询语句查询出来的一个结

果集,但是,实际上这些内容还是在数据库当中,还并没有真正的取出到虚拟机的内存中。

ResultSet 其实是保存了一个指向其当前数据行的游标,我们需要使用ResultSet 的方法让游

标一行一行的向下移动,然后获取每一行的数据,所以在操作ResultSet 对象期间,数据库连接不能关闭。

返回类型 方法签名 说明

boolean next() CURSOR(游标)从当前位置向前?移一行

Type getType(String

columnLabel)

根据数据库表的列名得到指定列的值

Type getType(int

columnIndex)

根据列的序号得到指定列的值,第一列的序号是1

void close() 立即释放此 ResultSet 对象的数据库和 JDBC 资源,而不是等待该

对象自动关闭时发生此操作

posted on 2016-06-20 12:37  雪的心  阅读(373)  评论(0编辑  收藏  举报

导航