`
SuseLinux
  • 浏览: 27487 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

JDBC驱动

 
阅读更多

 

JDBCJDBC驱动

首先要搞清楚的是,JDBCJDBC驱动。JDBC指的是一组API,用于加载相应的驱动程序,说白了,在Java中,就是指的java.sqlCore API)和javax.sqlExtension 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 driverBridge驱动将所有JDBC请求翻译成ODBC请求,并转发给ODBC驱动。只建议在实验中使用,或没有其它选择时使用。

Type 2 driverNative驱动,它将JDBC请求翻译为“特定的数据库请求”,

Type 3 driverMiddleware驱动将JDBC请求,通过网络,转发给中间层服务器。中间层再将其翻译为具体的数据库请求,中间层可以依次使用Type 124型驱动。

Type 4 driverPure驱动,使用javanetwork相关的库,直接与数据库服务器通信。

 

 

四种驱动的结构如下图:



 

 

四种驱动优缺点比较

四种JDBC驱动的优缺点比较如下:

JDBC驱动Type

优点

缺点

Bridge

1.只要DBODBC可用,这种方式可用于几乎所有数据库

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. 提供了如缓存、负载均衡等高级特性,及loggingauditing

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/XMLXML

虽然在JDK6中已经支持了JDBC 4.0,但是各数据库产品相应的JDBC驱动却未必有。当然,JDBC4.0是后向兼容的,借助JDK6使用JDBC3.0的功能是完全没有问题的。

 

 

提一下JDBC中的ResultSetCursor

一次查询的结果集就是ResultSet,包含0到多个Row。而Cursor游标被看作是指向一行记录的一个指针。JDBC API支持游标的forwardbackward、移到特定行、移动到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(".....");

参数ab分别为TypeConcurrency,若此处不指定参数,它们的默认值为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.7及以上...

    mysql8版本jdbc驱动包

    对于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版本及以下数据库 mysql jdbc 驱动 适用于5.6版本及...

    Oracle12C JDBC 驱动

    Oracle12C JDBC驱动是连接Java应用程序与Oracle数据库12c Release 2 (12.2.0.1) 的关键组件。JDBC(Java Database Connectivity)是Java平台中的一个标准API,它允许Java程序通过Java语言来访问和操作数据库。在...

    oracle jdbc 驱动,支持oracle 19c

    为了使Java开发者能够充分利用Oracle 19c的特性,Oracle发布了与之兼容的JDBC驱动,确保了在新的数据库版本下应用程序的平滑运行和高效开发。 Oracle JDBC驱动之所以重要,是因为它作为连接Java应用程序和Oracle...

    sql server jdbc驱动

    SQL Server JDBC驱动是Microsoft公司为SQL Server数据库开发的一套Java数据库连接驱动,它允许Java应用程序通过Java数据库连接API(JDBC)与SQL Server数据库进行交互。JDBC是Java中用于数据库交互的标准API,它提供...

    access的jdbc驱动

    Access的JDBC驱动是Java数据库连接(Java Database Connectivity, JDBC)的一种实现,它允许Java程序与Microsoft Access数据库进行交互。在JDK 1.8之后,Oracle公司不再默认提供对ODBC(Open Database Connectivity...

    达梦数据库JDBC驱动包合集包含MYSQL驱动包

    本篇将详细介绍达梦数据库JDBC驱动包及其在与MySQL数据库交互中的作用。首先,我们需要了解JDBC(Java Database Connectivity),它是Java语言连接数据库的标准接口,由Oracle公司开发,使得Java开发者能够通过标准...

    oracle12 jdbc驱动包

    Oracle 12c JDBC驱动包是Oracle数据库与Java应用程序之间的桥梁,它允许Java开发者通过编写Java代码来访问和操作Oracle数据库。在Java编程环境中,JDBC(Java Database Connectivity)是标准API,用于连接各种类型的...

    impala数据库JDBC驱动集

    在本压缩包"impala数据库JDBC驱动集"中,我们很显然会找到用于连接和操作Impala数据库的JDBC驱动程序。 Impala的主要特点包括其并行查询执行模型,它能够快速地处理PB级别的数据,而无需将数据从HDFS或HBase中提取...

    sql server 2000 jdbc 驱动

    SQL Server 2000 JDBC驱动是用于Java应用程序与Microsoft SQL Server 2000数据库进行交互的一种关键组件。在Java编程中,JDBC(Java Database Connectivity)接口提供了标准的方法来连接、查询和操作数据库。对于SQL...

    sybase 数据库 jdbc 驱动下载

    在本文中,我们将深入探讨Sybase数据库与JDBC驱动的相关知识点。 首先,JDBC驱动是Java应用程序与数据库之间通信的桥梁,它提供了Java API来执行SQL语句并处理结果。对于Sybase数据库,JDBC驱动主要有以下几种类型...

    最新Oracle_11g JDBC驱动包

    Oracle JDBC驱动包是用于Java应用程序与Oracle数据库之间通信的重要组件。它遵循Java Database Connectivity (JDBC) API标准,使得开发者可以使用Java语言高效地访问Oracle数据库。本文将深入探讨Oracle JDBC驱动的...

    sql server2008 jdbc驱动

    SQL Server 2008 JDBC驱动是用于Java应用程序与Microsoft SQL Server 2008数据库进行交互的一种关键组件。JDBC(Java Database Connectivity)是Java平台中的标准接口,它允许Java程序通过Java代码来访问和操作...

    数据库JDBC驱动程序包

    数据库JDBC驱动程序包是一个非常重要的组件,尤其对于Java Web开发者而言,它是连接各种数据库的基础。JDBC(Java Database Connectivity)是Java编程语言中的一个标准API,它允许Java应用程序与各种类型的数据库...

    jdbc驱动jar包.zip

    在Java应用中,JDBC驱动程序扮演着至关重要的角色,它作为Java代码和数据库之间的桥梁,使得数据的查询、更新、插入和删除等操作变得简单。 "jdbc驱动jar包.zip"是一个包含JDBC驱动程序的压缩文件。通常,这个...

    mysql5.7.20的jdbc驱动

    本文将详细探讨“mysql5.7.20的jdbc驱动”这一主题,包括其重要性、功能、版本兼容性以及如何在Java项目中使用。 首先,MySQL 5.7.20 JDBC驱动程序是Java应用程序连接到MySQL数据库的关键组件。它提供了Java API,...

    kingbaseV8 jdbc 驱动

    KingbaseV8 JDBC驱动是连接KingbaseV8数据库的重要组件,允许Java应用程序通过JDBC(Java Database Connectivity)接口与数据库进行交互。JDBC是Java语言中用来规范客户端程序如何访问数据库的应用程序接口,提供了...

    mysql8.0jdbc驱动.zip

    MySQL 8.0 JDBC驱动是Java应用程序连接MySQL数据库的关键组件,它允许程序通过Java Database Connectivity (JDBC) API与MySQL数据库进行交互。JDBC是一种Java编程接口,它为开发人员提供了一种标准的方法来访问各种...

Global site tag (gtag.js) - Google Analytics