如何写自己的Type3 JDBC 驱动

限时加码!20+主流AI编程工具免费用 购周边加赠Coding Plan Lite,Claude Code、Cursor等即刻畅享,学习进阶更高效! 阅读详情
第1部分:应用程序连接数据的简单方法
前言

你想不想写自己的JDBC驱动,或者是否想把现在的JDBC驱动转换成Type3的驱动呢?Type3 的驱动主要用于无需客户端设置的Internet/Intrant应用程序中,并且提供灵活的系统管理工具。本文中Nitin Nanda 和 Sunil Kumar描述了JDBC驱动的架构并概略讲解了Type3 JDBC驱动的三层结构。并演示了如何创建自己的Type3 JDBC驱动。
在Java中访问数据库系统你需要一个JDBC驱动。你可以自己写Type1到Type4的JDBC驱动,可以是纯Java的方式或者使用Java结合本地接口方法的复合方式。产品化的方式趋向于利用纯Java技术创建Type3或Type4的驱动程序。在Internet应用程序中访问数据库的效率和稳定性成为了关键因素,这时Type3 JDBC驱动显示出了它的优势。所以,要开发高效的、易部署的Internet应用,你通常需要将现在的Type1或Type2类型的JDBC替换成Type3类型的。

整个文章分为3个部分:
1. 应用程序连接数据库的简单方法。
2. 使用自定义的JDBC驱动编译、部署、访问数据。
3. 通过高级的日志功能、连接池、预处理数据集增强自定义的JWDriver的性能。
在这三个部分中,我们首先介绍了我们自己的Type3 JDBC驱动的结构和设计(第一部分),然后讲了如何实现和部署整个驱动(第二部分),最后讲解了如何在其中增加一些高级特性,比如SQL日志、连接池等(第三部分)。

注意:
    在开始之前,也许你可以先看一下Nitin Nanda's的"JDBC Drivers in the Wild",这更有利于你理解JDBC驱动。

JDBC驱动的结构
JDBC为通用的数据库访问提供了一种程序级的接口。在一个特定的数据库环境下使用JDBC API你需要一个JDBC驱动来完成他们直接的协调运行。JDBC被分为四种类型或者说层次。每一个类型都有一个JDBC实现,以便满足日益增加的对平台独立性、执行效率和可管理性的要求。这四种类型分别是:
Type1:JDBC-ODBC(开方数据库连接)桥。
Type2:本地API,部分的Java驱动。
Type3:网络协议,完全的Java 驱动。
Type4:本地协议,完全的Java驱动。
所有的JDBC驱动都要实现下面四个JDBC类:Driver、Connection、Statement和ResultSet。包含在java.sql包种DriverManager类用于管理被加载的驱动。客户端应用程序通过它获得数据库连接。JDBC的Driver通过下面的方法加载:
Class.forName("com.jw.client.JWDriver");
当这个Driver被加载时它的staic部分的代码就会执行,通过DriverManager注册这个驱动。现在,只要客户端应用程序通过DriverManger.getConnection()方法,DriverManager就会转而调用Driver.connect()方法。每一个JDBC驱动必须实现java.sql.Driver接口。所以,JDBC驱动的Driver.connect方法会首先检测当前的驱动Url是否正确,然后会通过connet()方法返回一个Connection对象。

简单Type3驱动的结构
为了向你展示Type3驱动的内容结构,我创建了一个自己的Type3JDBC驱动。如图1所示,我们的Type3驱动是基于网络协议、完全Java实现的,它分为3个层次,同时向你展示了JDBC是如何通过中间层的网络协议进行通信的。中间层服务讲请求传输(直接或间接的)给特定的数据库本地连接接口,然后通过这个接口将请求传输到数据库服务器。中间层用Java实现,数据库访问的实现通过JDBC-ODBC桥。
 
图1 JDBC Type3 的结构
对于applet,客户层驱动文件位于中间层服务器,并且可以直接下载。在JDBC驱动种RMI提供网络协议服务,负责驱动的客户端和服务端的通信。JDBC-ODBC桥使得JDBC请求可以传输到数据库服务器。
驱动的客户层为客户端程序提供了标准的JDBC接口,包括实现了java.sql.Driver接口的Driver类。同时还包含了JDBC的Connection、Statement、Result接口的实现。
客户端应用程序,比如applet,可以使用Type3驱动的客户层类进行开发,因为它实现了标准的JDBC接口拥有标准的JDBC功能。客户层类的Driver在内部会维护与中间层提供的远程接口之间的通信。这些远程接口提供了客户端传输JDBC请求要用到的基本方法。应用程序会调用已经实现了的Driver中的JDBC方法,随后这些调用会通过RMI发送到中间层。所有Driver类的客户层通过中间层来管理内部的RMI通信。
驱动的服务层是一个RMI服务器,它通过JDBC-ODBC桥来和数据库进行通信。驱动的服务层包含4个远程接口以及它们的实现,这些远程接口分别为JDBC的Driver、Connection、Statement和Result提供了访问接口。实现这些远程接口的类会在内部维护JDBC-ODBC的桥驱动的Connection、Statement和Result对象。当客户层类调用远程接口的时候,远程接口的实现使用内部的JDBC对象与数据库通讯。
现在你已经了解了Type3 JDBC驱动的接口,下面让我们进一步的深入到客户层和服务器层中。

JDBC类驱动图
为了实现Type3 JDBC驱动,我们必须创建客户层和中间层。客户层类位于com.jw.client包中,中间层位于com.jw.server包中,让我们先来看看客户层。
客户层类
客户层包com.jw.client中包含下面几个类:
com.jw.client.JWDriver类:JDBC驱动(Driver)的实现类。
com.jw.client.JWConnection类:JDBC连接(Connection)的实现类。
com.jw.client.JWStatement类:JDBC表达式(Statement)的实现类。
com.jw.client.JWRseultSet类:JDBC结果集(ResultSet)的实现。
如图2所示,它描述了客户层和中间层Driver和Connection类之间的关系。
 
图2:Driver和Connection类图
让我们仔细的看看JWDriver类的内部:
JWDriver类
com.jw.client.JWDriver类实现了java.sql.Driver接口,它提供了通过DriverManager类注册自己并创建数据库连接的方法。这个类实现了远程Driver的封装以便提供JDBC驱动接口。在应用程序中通过下面的方法调用可以加载JWDriver:
Class.forName("com.jw.client.JWDriver");
当它通过DriverManager类加载后,上面的代码中forName方法会调用JWDriver类的static部分的代码。下面显示的代码中的static部分:
static
{
try
{
// Register the JWDriver with DriverManager
JWDriver driverInst = new JWDriver();
DriverManager.registerDriver(driverInst);
System.setSecurityManager(new RMISecurityManager());
}
...
}


JWDriver类同时还维护一个远程驱动的引用,com.jw.server.IremoteDriver,它位于中间层服务器。远程驱动的引用为JWDriver创建了数据库的连接。所以当应用程序需要获得一个数据库连接的时候就调用DriverManager.getConnection()方法,这时DriverManager的JWDriver.connect()方法会通过远程驱动的引用获得一个数据库连接。
简而言之,JWDriver.connect()方法完成如下超作:
 比较客户端程序传递的URL如果是一个不匹配的URL就返回一个null。
 如果不存在远程驱动引用就通过Naming.lookup()方法创建一个。JWDriver.connet()方法控制远程驱动来创建数据库连接。:
    
if(remoteDriver == null)
{
remoteDriver= RemoteDriver)Naming.lookup
("rmi://"+serverName
+":1099"+"/RemoteDriver");
}


 创建、使用如上方法创建的数据库连接,并将创建的数据库连接返回给调用它的应用程序。RemoteDriver.getConnetion()方法是中间层JDBC驱动的远程调用,从中间层获得的远程Connection作为一个应用保存在JWConnection类对象中。JWConnection类可以通过下面的方法获得:
{
IRemoteConnection remoteConInstance =
(IRemoteConnection)remoteDriver.getConnection();
localConInstance = new JWConnection
(remoteConInstance);
.
..
return (Connection)localConInstance;
}



下面我们一起来仔细的看看JWConnection类。
JWConnection类
Com.jw.client.JWConnection类实现了Connection接口,而且它还包含一个远程服务器IremoteConnection接口的引用。
客户端程序中的JWDriver.connect方法可以得到JWConnection对象的引用并创建一个JWConnection对象。这样客户端就可以通过JWConnection对象任意的调用JDBC Connection接口的方法了。JWConnection在内部调用远程服务器的Connection。比如当客户端调用conn.createStatement()方法时(conn是一个JWConnection的引用),其内部会调用一个RemoteConnection.createConnection()方法,并返回一个远程的Statement引用;JWConnectoin的createStatement方法会创建一个JWStatement对象;最后一个JWStatement对象会返回个客户端,这个对象中包含的Statement的引用:
public Statement createStatement() throws
SQLException
{
try
{
IRemoteStatement remStmt =
(IRemoteStatement) remoteConnection.createStatement();
JWStatement localStmtInstance = new JWStatement(remStmt);
return (Statement)localStmtInstance;
}
}


图3描述了客户层和中间层中Connection和Statemennt类之间的关系。
 
图 Connection和Statement之间的关系

下面再让我们来看看JWStatement类
JWStatement类
com.jw.clent.JWStatement类实现了JDBC Statement接口,同时引用了远程服务器的Statement接口。这个类封装了远程Statement存根,它提供了JDBC Statement接口,JWConnection.createStatemnt()方法创建了JWStatement对象并返回给客户端。这样客户端就可以使用JDBC Statement接口提供的所有方法,在内部JWStatement调用了远程的Statement。比如客户端调用stmt.executeQuery()方法,这个方法内部会调用RemoteStatement.executeQuery()方法并返回一个ResulstSet引用。最终,JWResultSet对象会返回到客户端,这个对象包含了ResultSet的引用:
public ResultSet executeQuery(String sqlQuery)
throws SQLException
{
try
{
IRemoteResultSet remoteRsInstance =
(IRemoteResultSet) remoteStmt.executeQuery(sqlQuery);
JWResultSet localRsInstance = new JWResultSet(remoteRsInstance);
return (ResultSet)localRsInstance;
}
catch(RemoteException ex)
{
throw(new SQLException(ex.getMessage()));
}
}


图4描述了客户层和中间层中Statement和ResultSet类之间的关系。
 
图4 Statement和ResultSet类之间的关系

下面我们来看看JWResultSet类。
JWResultSet类
com.jw.clent. JWResultSet类实现了JDBC ResultSet接口,同时引用了远程服务器的ResultSet接口。这个类封装了远程ResultSet存根,它提供了JDBC ResultSet接口。JWStatement.executeQuery()方法创建想客户端返回一个JWResult对象,它包含了Result接口的引用。因此客户端程序可以使用JDBC Result提供的任何方法,JWResult对象内部会调用远程服务器的ResultSet。比如当客户端调用rs.next(rs一个一个JWResultSet对象的引用),next()方法内部会调用RemoteResultSet.getNextRow(),这个方法会返回一个包含行数据的数组。当客户端调用rs.getString(1)方法时会返回保存在JWResultSet中行数据的当前值。
public class JWResultSet implements
java.sql.ResultSet
{
// The current ResultSet data row
private Object[] row;//自己替换[]
...
public boolean next() throws SQLException
{
try
{
// Get the current data row from remote
ResultSet
// All the getXXX methods will get data from
local 'row'
row = remoteResultSet.getNextRow();
}
catch(Exception ex)
{
return false;
}
if(row == null)
{
return false;
}
return true;
}
}



中间层类
中间层类位于com.jw.server包中,包括下面几个类:
 com.jw.server.RemoteDriverImpl类:这是一个驱动类它负责获得数据库连接,同时作为RMI服务器。
 com.jw.server.RemoteConnectionImpl类:是一个Connection 类,并且它负责获得JDBC Statement。
 com.jw.server.RemoteStatementImpl类:是一个Statement类,并且它负责获得JDBC ResultSet。
 com.jw.server.RemoteResultSetImpl类:是一个ResultSet类。

下面我们详细分析每个类
RemoteDriverImpl
RemoteDriverImpl扮演一个RMI服务器(它继承了UnicastRemoteObject)并向JDBC驱动客户端提供了getConnection()方法。图2显示了RemoteDriverImpl的其他类与接口之间的关系。
com.jw.server.IremoteDriver是一个扩展了Remote的接口,它提供了getConnection()方法。这个方法创建JDBC Connection并作为一个IremoteConnection的引用返回给客户端。
由于RemoteDriverImpl同时还是JDBC驱动服务器的RMI服务器,它会读取ODBC的数据源名称(DSN),从部署在服务层中的DriverSettings.properties
文件读取用户名和密码。这些值可以创建一个JDBC Connection,此外,RemoteDriverImpl可以通过名称服务“RemoteDriver”注册自身,所有JDBC 的客户层可以通过Naming.lookup()方法与服务端连接。然后它会加载JDBC-ODBC桥来创建数据库连接:
public static void main(String args[])//自己替换[]
{
System.setSecurityManager(new RMISecurityManager());
try
{
// Get the data source name, data source user, data
source
// Password and log level
ResourceBundle settingsBundle =
ResourceBundle.getBundle(
"DriverSettings");
DSN = settingsBundle.getString("DSN");
dsUser = settingsBundle.getString("User");
dsPassword = settingsBundle.getString
("Password");
// Create a RemoteDriverImpl instance to register
with naming service
RemoteDriverImpl serverInstance = new
RemoteDriverImpl();
Naming.rebind
("RemoteDriver",serverInstance);
// Load the JDBC-ODBC Bridge driver
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
}
...
}


getConnection()方法创建了JDBC-ODBC连接,然后返回RemoteConnectionImpl对象远程接口的引用来控制JDBC-ODBC连接:
public IRemoteConnection getConnection()
throws RemoteException,SQLException
{
String URL="jdbc:odbc:"+DSN;
Connection sqlCon =
DriverManager.getConnection(URL,dsUser,dsPassword);
RemoteConnectionImpl ConnectionInstance =
new RemoteConnectionImpl(sqlCon);
return (IRemoteConnection)ConnectionInstance;
}


下面让我们来看看RemoteConnectionImpl。
RemoteConnectionImpl类
RemoteConnectionImpl继承了UnicastRemoteObject类并实现了IremoteConnection接口(图2、3显示了RemoteConnectionImpl类的其他类和接口的关系)。IremoteConnection接口提供了创建JDBC Statement和关闭数据库连接的方法,RemoteConnectionImpl同时封装了传入构造中的JDBC连接。
createStatement()创建了JDBC-ODBC Statement并返回RemoteConnectionImpl对象的引用来控制JDBC-ODBC Statement:
public IRemoteStatement createStatement() throws
RemoteException,SQLException
{
RemoteStatementImpl StmtImplInstance = new
RemoteStatementImpl(sqlConnection.createStatement());
return (IRemoteStatement)StmtImplInstance;
}


接下来closeConnection()方法通过内部封装的close()方法关闭JDBC Connection:
public void closeConnection() throws
RemoteException,SQLException
{
sqlConnection.close();
}


下面再看RemoteStatementImpl。
RemoteStatementImpl类
如图3、4中显示的RemoteStatementImpl类,它继承了UnicastRemoteObject类并实现了IremoteStatement接口。这个接口提供了创建JDBC ResultSet和关闭Statement对象的方法。RemoteStatementImpl同样封装了闯入构造的Statement对象。
executeQuery()方法创建了JDBC-ODBC的ResultSet并返回一个RemoteStatementImpl对象的引用来控制JDBC-ODBC的ResultSet:
public IRemoteResultSet executeQuery(String Query)
throws RemoteException,SQLException
{
ResultSet rs = sqlStatment.executeQuery(Query);
RemoteResultSetImpl remoteRs = new
RemoteResultSetImpl(rs);
return (IRemoteResultSet)remoteRs;
}


close()方法简单的关闭了JDBC Statement对象:
public void close() throws RemoteException,
SQLException
{
sqlStatment.close();
}


最后再来看看RemoteResultSetImpl类。
RemoteResultSetImpl类
RemoteResultSetImpl继承了UnicastRemoteObject类并实现了IremoteResult接口(图4 显示了RemoteResultSetImpl类的其他类和接口的关系)。IremoteResult接口获得JDBC ResultSet行数据并关闭ResultSet对象。RemoteResultSetImpl同样封装了构造中的ResultSet对象。
getNextRow()方法返回一个包含对象数组的JDBC ResultSet给客户端JWResultSet,如果ResultSet不包含任何数据会返回null:
public Object[] getNextRow() throws
RemoteException,SQLException//自己替换[]
{
// Return null if all data has already been
iterated
if(sqlRs.next() == false)
return null;
// Prepare the data row in an array of Objects
Object []row = new Object[colNum];//自己替换[]
for(int i = 1; i <= colNum; i++)
{
row[i-1] = sqlRs.getString(i);//自己替换[]
}
return row;
}



close()方法会关闭ResultSet对象:
public void close() throws
RemoteException,SQLException
{
sqlRs.close();
}


以上就是中间层中的所有类。

Type3 总结
在这篇文章中,我向你展示了Type3 JDBC驱动的结构。驱动创建了客户层和服务层组件,并使用RMI实现它们之间的通信。我们还演示了客户层的不同对象如何通过引用与服务层中的远程对象交互。
在第2部分我会向你展示如何使用和部署这里创建的Type3驱动。我们将提供一个简单的应用程序,并通过序列图的方式向你展示驱动是如何加载的,如何创建一个JDBC Connection,如何创建一个 JDBC Statement。
JMeter JDBC请求Query Type实测(金仓数据库版) 本文通过实测验证了JMeter中JDBC Request组件的不同Query Type参数在金仓数据库KingbaseES中的行为。测试结果表明:Select Statement仅支持单条SELECT查询;Update Statement支持多条DML语句;Callable Statement支持存储过程和多语句操作;Prepared Select Statement支持参数化查询,提升重复查询性能;Commit与Rollback可手动控制事务。文章旨在帮助用户明确各Query Type的使用场景和限制,避 阅读详情

相关推荐

JAVA学习:JDBC连接DB2数据库(1)

在CSDN潜了这么久,今天终于决定开始一点东西了,慵懒的脚算是迈出第一步了,希望自己坚持。 JAVA项目做了这么长时间,数据库的连接一直没有仔细研究过。项目中因为这部分都是封在包里的,自己并没有机会去,甚至连看都看不到。趁着最近比较闲,自己好好的练习一下。以下这一段蓝字部分是从网上拷来的,DB2的几种连接方式:  DBC 驱动程序体系结构分为四种类型:Type1,Type2,Type3,Typ

httpftp的专栏 7273

JDBC driver 的类型 Type 1 Type2 Type3 Type4

在网上下载jdbc驱动程序,常看见type4字样,开始以为是厂商自己的标准,近来翻看资料,原来是sun定义的jdbc标准。 type1 jdbc-odbc桥形式进行连接,是作为jdk1.1后的一部分,当然也是sun.jdbc.odbc包的一部分 连接形式: application---&gt;jdbc-odbc bridge(type1 jdbc driver)----&gt;jdbc-od...

tellixu 1601

掌握MySQL JDBC数据库驱动操作

本文还有配套的精品资源,点击获取 简介:MySQL JDBC数据库驱动作为Java与MySQL数据库交互的接口,使Java程序能够通过JDBC API执行SQL语句和处理数据。本文介绍了 mysql-connector-java 驱动的使用,包括驱动的类型、安装和基本操作步骤。特别指出5.1.8版本是针对MySQL 6.0和JDK 1.6优化的类型4驱动,强调...

weixin_33068055的博客 2626

数据库驱动JDBC

Java提供操作数据库的规范(接口),将规范给各大数据库厂商。各大数据库厂商实现规范(接口),广大Java程序员学习规范,。 maven官网: https://mvnrepository.com/artifact/mysql/mysql-connector-java mysql官网: https://dev.mysql.com/downloads/connector/j/ 1.3.2 导入数据库驱动 1.3.2.1 方式一:创建lib导入 在项目下新建lib文件夹,将数据库驱动放入,鼠标右键点击选择添加到库

希望有点用 5026

[转载]如何自己的Type3 JDBC 驱动

如何自己的Type3 JDBC 驱动摘要:你想不想自己的JDBC驱动,或者是否想把现在的JDBC驱动转换成 Type3驱动呢?Type3驱动主要用于无需客户端设置的Internet/Intrant应用程序中,并且提...

congji3817的博客 459

JDBC驱动

JDBCJava Database Connectivity)是Java中的一种API,用于与数据库进行交互。 它提供了标准接口,使得Java程序可以连接各种关系型数据库(如MySQL、Oracle、PostgreSQL等)。 通过JDBC,开发者可以发送SQL查询和更新语句、检索和处理结果。

m0_62943934的博客 291

db2的jdbc驱动

依照 JDBC 规范,有四种类型的 JDBC 驱动程序体系结构: Type 1:这类驱动程序将 JDBC API 作为到另一个数据访问 API 的映射来实现,如开放式数据库连通性(Open Database Connectivity,ODBC)。这类驱动程序通常依赖本机库,这限制了其可移植性。JDBC-ODBC 桥驱动程序就是 Type 1 驱动程序的最常见的例子。 Type 2:这类驱动程序部分用 JAVA 编程语言编写,部分用本机代码编写。这些驱动程序使用特定于所连接数据源的本机客户端库。同样,由于使

liujinwei2005的专栏 2505

DB2的JDBC驱动

<br />DB2的JDBC驱动<br /><br /> 在Java程序中连接DB2需要使用到JDBC驱动,一般情况下,大家都在会项目工程中引入驱动程序包 db2java.zip或者db2jcc.jar。db2java.zip中包含了驱动COM.ibm.db2.jdbc.app.DB2Driver和 COM.ibm.db2.jdbc.net.DB2Driver;db2jcc.jar中包含了驱动 com.ibm.db2.jcc.DB2Driver。<br /><br /> COM.ibm.db2.j

想飞的马 4414

Informix JDBC驱动包使用指南

在当今信息时代的背景下,数据库管理系统(DBMS)是数据存储、检索和管理的关键组件。Informix,作为一种高效且广泛使用的数据库解决方案,为众多企业和IT专家所青睐。Informix具有强大的数据处理能力,特别是在处理大量事务和实时分析应用时,其优越性尤为明显。本章将简要介绍Informix的起源、特点以及它在现代IT环境中的定位。首先,我们来看看Informix的历史。

weixin_35995661的博客 1256

2. JDBC驱动是什么?如何在Java项目中配置MySQL的JDBC驱动

JDBC驱动JDBC API的实现,负责将Java程序中的标准JDBC方法调用转化为数据库特定的操作。尽管从JDBC 4.0开始,驱动程序会自动注册,但明确地加载驱动程序仍然是一种好习惯,特别是在某些环境下可能需要手动加载。对于MySQL,使用的是Type 4驱动,这是一种纯Java驱动程序,可以直接与MySQL数据库服务器通信。配置MySQL的JDBC驱动主要包括两个步骤:添加驱动程序到项目中,以及在代码中加载和使用驱动程序。JAR文件添加到项目的类路径中,然后在代码中加载驱动并使用。

zhzjn的博客 1969

DB2的JDBC连接驱动与URL总结

依照 JDBC 规范,有四种类型的 JDBC 驱动程序体系结构: Type 1:这类驱动程序将 JDBC API 作为到另一个数据访问 API 的映射来实现,如开放式数据库连通性(Open Database Connectivity,ODBC)。这类驱动程序通常依赖本机库,这限制了其可移植性。JDBC-ODBC 桥驱动程序就是 Type 1 ...

weixin_34255055的博客 2704

db2 java驱动下载_IBM DB2 jdbc驱动

IBM DB2 jdbc驱动是基于IBM官方推出的一款jdbc驱动程序,可以解决日常使用中的错误问题,是ibm db2服务器必备的一款文件,小编还带来了详细的IBM DB2 jdbc驱动安装方法,可以参考,需要的朋友赶快下载吧!DB2的JDBC驱动安装说明在Java程序中连接DB2需要使用到JDBC驱动,一般情况下,大家都在会项目工程中引入驱动程序包db2java.zip或者db2jcc.jar。...

weixin_29215391的博客 1037

JDBC 驱动程序类型

转载地址:https://www.jianshu.com/p/fce9ac03a250 什么是 JDBC 驱动 说白了 JDBC 驱动就是一组实现了 JDBC API 接口的 Java 类的集合,该接口用于与数据库服务器进行交互。例如,使用 JDBC 驱动程序可以让你打开数据库连接,并通过发送 SQL 或数据库命令,然后通过 Java 接收结果。 JDK 中的 java.sql 包中定义了各...

weixin_40805079的博客 872

JDBC连接数据库

JDBC连接数据库:1.加载数据库驱动;2、创建数据库连接;3、创建statement对象;4、定义SQL语句并处理执行;5、释放连接

m0_65347933的博客 1029

SQL Server JDBC驱动包使用详解

Java应用程序连接SQL Server数据库主要有以下几种方式::利用Java提供的标准接口,通过JDBC驱动实现与数据库的连接。:通过JNDI查找预先配置好的数据库连接信息,实现数据库的连接。连接池:预先创建一批数据库连接,应用程序复用这些连接,提高连接效率和性能。JDBCJava Database Connectivity)是一种Java API,用于连接和执行查询到多种类型数据库JDBC API提供了一组用于执行SQL语句的接口和类。

weixin_42602368的博客 1354

(ZT)DB2的JDBC连接驱动与URL总结

DB2 与 JDBC 支持依照 JDBC 规范,有四种类型的 JDBC 驱动程序体系结构  DB2 与 JDBC 支持依照 JDBC 规范,有四种类型的 JDBC 驱动程序体系结构: Type 1:这类驱动程序将 JDBC API 作为到另一个数据访问 API 的映射来实现,如开放式数据库连通性(Open Database Connectivity,ODBC)。这类驱动程序通常

cs_dn_lgx的专栏 994

jdbc驱动程序类型_JDBC驱动程序类型

jdbc驱动程序类型A JDBC Driver is a software component, which allows a Java application to interact with a database. With a JDBC driver, an application is made capable of sending queries to a database and re...

从零开始的教程世界 798

java jdbc 连接db2

/**了解基础情况**/ 对于Java程序员而言,DB2 提供了两种应用程序编程接口(API):JDBC 和 SQLJ。 JDBC:   JDBC 驱动程序分为旧的/CLI 驱动程序和新的通用 JDBC 驱动程序(Universal JDBC Driver)。   JDBC 是一个与供应商无关的动态 SQL 接口,该接口通过标准化的 Java 方法向您的应用程序提供数据访问。   J

3079
上一篇: Mysql5.0中文乱码解决方案
下一篇: 一段登陆代码
dzeng81
博客等级 码龄23年 117粉丝 436原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值