JDBC和JDBC驱动
首先要搞清楚的是,JDBC和JDBC驱动。JDBC指的是一组API,用于加载相应的驱动程序,说白了,在Java中,就是指的java.sql(Core API)和javax.sql(Extension API)两个包的内容。而JDBC驱动则是对应各数据库产品的驱动程序。与DB直接通话的,是JDBC驱动。一个常见的JDBC访问结构如下:

在应用程序与驱动之间多了一层JDBC,是为了屏蔽异种数据库的差异。
Quote:
Java application calls the JDBC library. JDBC loads
a driver which talks to the database. We can change database engines
without changing database code.
四种JDBC驱动
JDBC驱动(不是JDBC)分为4类(Type or Level),分别是:
Type 1 – JDBC-ODBC桥驱动,也称Bridge
Type 2 – 本地API / 部分JAVA驱动,也称Native
Type 3 – All Java / Net-Protocol 驱动,也称Middleware
Type 4 – All Java / Native-Protocal驱动,也称Pure
参见:http://www.jdbc-tutorial.com/jdbc-driver-types.htm
Type 1 driver,Bridge驱动将所有JDBC请求翻译成ODBC请求,并转发给ODBC驱动。只建议在实验中使用,或没有其它选择时使用。
Type 2 driver,Native驱动,它将JDBC请求翻译为“特定的数据库请求”,
Type 3 driver,Middleware驱动将JDBC请求,通过网络,转发给中间层服务器。中间层再将其翻译为具体的数据库请求,中间层可以依次使用Type 1、2和4型驱动。
Type 4 driver,Pure驱动,使用java的network相关的库,直接与数据库服务器通信。
四种驱动的结构如下图:

四种驱动优缺点比较
四种JDBC驱动的优缺点比较如下:
JDBC驱动Type
|
优点
|
缺点
|
Bridge
|
1.只要DB的ODBC可用,这种方式可用于几乎所有数据库
|
1. 不是全由Java实现,移植性不好;
2. 所有Type中最慢的;
3. 客户端要先安装ODBC;
4. 不适用于WEB应用;
|
Native
|
1. 使用Native API,速度比Bridge快;
|
1. 客户端要先安装Native
API,故不适用于WEB系统;
2. 不是由Java实现,移植性不好;
3. 若更换数据库,则需安装相应的本地API;
4. 快要淘汰了;
5. 不是线程安全的;
|
Middleware
|
1. 基于服务端的,客户端不要安装什么东西;
2. 全由Java实现,易于移植,适于WEB应用;
3. 在可移植、扩展性、性能方面还有很大优化空间;
4. 适当设计网络协议,可使JDBC驱动很小,加载很快;
5. 提供了如缓存、负载均衡等高级特性,及logging和auditing
6. 一个驱动可用于多种数据库;
7. 在所有Type中,效率最高;
|
1. 它需要额外的一个服务端系统(安装和维护的开销),回传结果集需要更长的时间;
|
Pure
|
1. 全由Java实现,平台无关,最适于WEB应用;
2. 架构层次减少,性能很不错;
3. 在客户端服务端都不需要额外安装软件,这些驱动支持动态下载;
|
1. 每一种数据库都需要一个不同的驱动
|
JDBC的历史与版本
发布年份
|
JDBC版本
|
JSR规范
|
JDK实现的版本
|
2006
|
JDBC 4.0
|
JSR 221
|
JDK 6
|
2001
|
JDBC 3.0
|
JSR 54
|
JDK 1.4
|
1999
|
JDBC 2.1
|
|
JDK 1.2
|
1997
|
JDBC 1.2
|
|
JDK 1.1
|
JDBC 4.0的新增特性:
1)自动载入java.sql.Driver
2)支持ROWID类型
3)支持国家字符集转换
4)支持SQL/XML与XML
虽然在JDK6中已经支持了JDBC 4.0,但是各数据库产品相应的JDBC驱动却未必有。当然,JDBC4.0是后向兼容的,借助JDK6使用JDBC3.0的功能是完全没有问题的。
提一下JDBC中的ResultSet和Cursor
一次查询的结果集就是ResultSet,包含0到多个Row。而Cursor游标被看作是指向一行记录的一个指针。JDBC API支持游标的forward、backward、移到特定行、移动到a row whose position is
relative to another row,
ResultSet有三种Types:
TYPE_FORWARD_ONLY 不支持Scrollable,游标只能forward
TYPE_SCROLL_INSENSITIVE 支持Scrollable,游标既可forward也可backward,可以移动到某相对位置,也可移动到某绝对位置。对数据的改变不敏感,即当数据库变化时,当前结果集不变。
TYPE_SCROLL_SENSITIVE 支持Scrollable,游标既可forward也可backward,可以移动到某相对位置,也可移动到某绝对位置。对数据的改变敏感,即当数据库变化时,当前结果集也同步改变。
ResultSet有两种Concurrency:
CONCUR_READ_ONLY 不能用结果集更新数据库中的表。
CONCUR_UPDATETABLE 能用结果集更新数据库中的表。
如下代码示例:
Statement stmt =
con.createStatement(a, b);
ResultSet srs =
stmt.executeQuery(".....");
参数a和b分别为Type和Concurrency,若此处不指定参数,它们的默认值为TYPE_FORWARD_ONLY 和CONCUR_READ_ONLY。
另外,ResultSet接口提供了一系列方法以移动游标,如:next(),
previous(), first(), last(), beforeFirst(), afterLast(), relative(int),
absolute(int)等等。

- 大小: 4.4 KB

- 大小: 24.1 KB
分享到:
相关推荐
mysql jdbc 驱动 适用于5.7及以上版本数据库 mysql jdbc 驱动 适用于5.7及以上版本数据库 mysql jdbc 驱动 适用于5.7及以上版本数据库 mysql jdbc 驱动 适用于5.7及以上版本数据库 mysql jdbc 驱动 适用于5.7及以上...
对于MySQL 8版本的JDBC驱动而言,它不仅需要能够处理SQL语句和结果集,还必须适应MySQL 8所带来的新特性,如角色管理、通用表表达式(CTE)、窗口函数等。因此,驱动程序必须进行相应的升级,以确保可以充分利用...
mysql jdbc 驱动 适用于5.6版本及以下数据库 mysql jdbc 驱动 适用于5.6版本及以下数据库 mysql jdbc 驱动 适用于5.6版本及以下数据库 mysql jdbc 驱动 适用于5.6版本及以下数据库 mysql jdbc 驱动 适用于5.6版本及...
Oracle12C JDBC驱动是连接Java应用程序与Oracle数据库12c Release 2 (12.2.0.1) 的关键组件。JDBC(Java Database Connectivity)是Java平台中的一个标准API,它允许Java程序通过Java语言来访问和操作数据库。在...
为了使Java开发者能够充分利用Oracle 19c的特性,Oracle发布了与之兼容的JDBC驱动,确保了在新的数据库版本下应用程序的平滑运行和高效开发。 Oracle JDBC驱动之所以重要,是因为它作为连接Java应用程序和Oracle...
SQL Server JDBC驱动是Microsoft公司为SQL Server数据库开发的一套Java数据库连接驱动,它允许Java应用程序通过Java数据库连接API(JDBC)与SQL Server数据库进行交互。JDBC是Java中用于数据库交互的标准API,它提供...
Access的JDBC驱动是Java数据库连接(Java Database Connectivity, JDBC)的一种实现,它允许Java程序与Microsoft Access数据库进行交互。在JDK 1.8之后,Oracle公司不再默认提供对ODBC(Open Database Connectivity...
本篇将详细介绍达梦数据库JDBC驱动包及其在与MySQL数据库交互中的作用。首先,我们需要了解JDBC(Java Database Connectivity),它是Java语言连接数据库的标准接口,由Oracle公司开发,使得Java开发者能够通过标准...
Oracle 12c JDBC驱动包是Oracle数据库与Java应用程序之间的桥梁,它允许Java开发者通过编写Java代码来访问和操作Oracle数据库。在Java编程环境中,JDBC(Java Database Connectivity)是标准API,用于连接各种类型的...
在本压缩包"impala数据库JDBC驱动集"中,我们很显然会找到用于连接和操作Impala数据库的JDBC驱动程序。 Impala的主要特点包括其并行查询执行模型,它能够快速地处理PB级别的数据,而无需将数据从HDFS或HBase中提取...
SQL Server 2000 JDBC驱动是用于Java应用程序与Microsoft SQL Server 2000数据库进行交互的一种关键组件。在Java编程中,JDBC(Java Database Connectivity)接口提供了标准的方法来连接、查询和操作数据库。对于SQL...
在本文中,我们将深入探讨Sybase数据库与JDBC驱动的相关知识点。 首先,JDBC驱动是Java应用程序与数据库之间通信的桥梁,它提供了Java API来执行SQL语句并处理结果。对于Sybase数据库,JDBC驱动主要有以下几种类型...
Oracle JDBC驱动包是用于Java应用程序与Oracle数据库之间通信的重要组件。它遵循Java Database Connectivity (JDBC) API标准,使得开发者可以使用Java语言高效地访问Oracle数据库。本文将深入探讨Oracle JDBC驱动的...
SQL Server 2008 JDBC驱动是用于Java应用程序与Microsoft SQL Server 2008数据库进行交互的一种关键组件。JDBC(Java Database Connectivity)是Java平台中的标准接口,它允许Java程序通过Java代码来访问和操作...
数据库JDBC驱动程序包是一个非常重要的组件,尤其对于Java Web开发者而言,它是连接各种数据库的基础。JDBC(Java Database Connectivity)是Java编程语言中的一个标准API,它允许Java应用程序与各种类型的数据库...
在Java应用中,JDBC驱动程序扮演着至关重要的角色,它作为Java代码和数据库之间的桥梁,使得数据的查询、更新、插入和删除等操作变得简单。 "jdbc驱动jar包.zip"是一个包含JDBC驱动程序的压缩文件。通常,这个...
本文将详细探讨“mysql5.7.20的jdbc驱动”这一主题,包括其重要性、功能、版本兼容性以及如何在Java项目中使用。 首先,MySQL 5.7.20 JDBC驱动程序是Java应用程序连接到MySQL数据库的关键组件。它提供了Java API,...
KingbaseV8 JDBC驱动是连接KingbaseV8数据库的重要组件,允许Java应用程序通过JDBC(Java Database Connectivity)接口与数据库进行交互。JDBC是Java语言中用来规范客户端程序如何访问数据库的应用程序接口,提供了...
MySQL 8.0 JDBC驱动是Java应用程序连接MySQL数据库的关键组件,它允许程序通过Java Database Connectivity (JDBC) API与MySQL数据库进行交互。JDBC是一种Java编程接口,它为开发人员提供了一种标准的方法来访问各种...