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 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语言来访问和操作数据库。在...
Access的JDBC驱动是Java数据库连接(Java Database Connectivity, JDBC)的一种实现,它允许Java程序与Microsoft Access数据库进行交互。在JDK 1.8之后,Oracle公司不再默认提供对ODBC(Open Database Connectivity...
在本压缩包"impala数据库JDBC驱动集"中,我们很显然会找到用于连接和操作Impala数据库的JDBC驱动程序。 Impala的主要特点包括其并行查询执行模型,它能够快速地处理PB级别的数据,而无需将数据从HDFS或HBase中提取...
本篇将详细介绍达梦数据库JDBC驱动包及其在与MySQL数据库交互中的作用。首先,我们需要了解JDBC(Java Database Connectivity),它是Java语言连接数据库的标准接口,由Oracle公司开发,使得Java开发者能够通过标准...
Oracle 12c JDBC驱动包是Oracle数据库与Java应用程序之间的桥梁,它允许Java开发者通过编写Java代码来访问和操作Oracle数据库。在Java编程环境中,JDBC(Java Database Connectivity)是标准API,用于连接各种类型的...
在本文中,我们将深入探讨Sybase数据库与JDBC驱动的相关知识点。 首先,JDBC驱动是Java应用程序与数据库之间通信的桥梁,它提供了Java API来执行SQL语句并处理结果。对于Sybase数据库,JDBC驱动主要有以下几种类型...
SQL Server 2000 JDBC驱动是用于Java应用程序与Microsoft SQL Server 2000数据库进行交互的一种关键组件。在Java编程中,JDBC(Java Database Connectivity)接口提供了标准的方法来连接、查询和操作数据库。对于SQL...
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语言中用来规范客户端程序如何访问数据库的应用程序接口,提供了...
SQLServer 2008 JDBC驱动包是针对Java开发者设计的,主要用于建立Java应用程序与Microsoft SQL Server 2008数据库之间的连接。JDBC(Java Database Connectivity)是Java平台的标准接口,它允许Java代码与其他数据库...
MySQL 8.0 JDBC驱动是Java应用程序连接MySQL数据库的关键组件,它允许程序通过Java Database Connectivity (JDBC) API与MySQL数据库进行交互。JDBC是一种Java编程接口,它为开发人员提供了一种标准的方法来访问各种...
Oracle 12C JDBC驱动是Oracle数据库与Java应用程序之间的桥梁,使得Java开发者能够通过编写Java代码来访问和操作Oracle数据库。在Oracle 12C中,JDBC驱动主要有两个版本:ojdbc8.jar和ojdbc.jar。这两个版本的驱动...
本压缩包包含了适用于不同数据库系统的JDBC驱动,包括sqlserver2005-jdbc驱动、sqlserver2008-jdbc驱动、mysql-jdbc驱动以及oracle驱动,这使得开发者能够方便地与这些数据库进行通信。 1. SQL Server JDBC驱动: ...