()
整理人:徐仕锋()
版本号:
1
一、 概述
1 概述
JDBC 从物理结构上说就是 Java 语言访问数据库的一套接口集合。从本质上来说就是调用
者(程序员)和实现者(数据库厂商)之间的协议。JDBC 的实现由数据库厂商以驱动程
序的形式提供。JDBC API 使得开发人员可以使用纯 Java 的方式来连接数据库,并进行操
作。
ODBC:基于 C 语言的数据库访问接口。
JDBC 也就是 Java 版的 ODBC。
JDBC 的特性:高度的一致性、简单性(常用的接口只有 4、5 个)。
2 JDBC 的发展
没有 JDBC 之前 java 程序是这样连接各种数据库的。
缺点:1、要求程序员必须熟悉编写 java 程序连接各种数据库的驱动。
2、移植性很不好,更改数据库必须重新编写连接数据库的驱动程序。
2
用了 JDBC 以后 java 连接各种数据库方便多了!
3 JDBC 的 API 介绍
在 JDBC 中包括了两个包:java.sql 和 javax.sql。
① java.sql 基本功能。这个包中的类和接口主要针对基本的数据库编程服务,如生成连接、
执行语句以及准备语句和运行批处理查询等。同时也有一些高级的处理,比
如批处理更新、事务隔离和可滚动结果集等。
② javax.sql 扩展功能。它主要为数据库方面的高级操作提供了接口和类。如为连接管理、
分布式事务和旧有的连接提供了更好的抽象,它引入了容器管理的连接池、
分布式事务和行集(RowSet)等。
主要对象和接口:
注:除了标出的 Class,其它均为接口。
说明
与特定数据库的连接(会话)。能够通过 getMetaData 方法获
得数据库提供的信息、所支持的 SQL 语法、存储过程和此连
接的功能等信息。代表了数据库。
每个驱动程序类必需实现的接口,同时,每个数据库驱动程
序都应该提供一个实现 Driver 接口的类。
!
管理一组 JDBC 驱动程序的基本服务。作为初始化的一部
分,此接口会尝试加载在”jdbc.drivers”系统属性中引用的驱动
程序。只是一个辅助类,是工具。
"#
用于执行静态 SQL 语句并返回其生成结果的对象。
$%"#
继承 Statement 接口,表示预编译的 SQL 语句的对象,SQL
语句被预编译并且存储在 PreparedStatement 对象中。然后可
以使用此对象高效地多次执行该语句。
&"#
用来访问数据库中的存储过程。它提供了一些方法来指定语
句所使用的输入/输出参数。
'("
指的是查询返回的数据库结果集。
3
'("
可用于获取关于 ResultSet 对象中列的类型和属性信息的对
象。
4 驱动程序工作分类
驱动程序按照工作方式分为四类:
1、 JDBC-ODBC bridge + ODBC 驱动
JDBC-ODBC bridge 桥驱动将 JDBC 调用翻译成 ODBC 调用,再由 ODBC 驱动翻译
成访问数据库命令。
优点:可以利用现存的 ODBC 数据源来访问数据库。
缺点:从效率和安全性的角度来说的比较差。不适合用于实际项目。
2、 基于本地 API 的部分 Java 驱动
我们应用程序通过本地协议跟数据库打交道。然后将数据库执行的结果通过驱动
程序中的 Java 部分返回给客户端程序。
优点:效率较高。
缺点:安全性较差。
3、 纯 Java 的网络驱动
(中间协议) (本地协议)
app JDBC 纯 Java 中间服务器 DB
缺点:两段通信,效率比较差
优点:安全信较好
4、 纯 Java 本地协议:通过本地协议用纯 Java 直接访问数据库。
特点:效率高,安全性好。
二、 编程步骤
1 注册一个 Driver
注册驱动程序有三种方式:
方式一:Class.forName(“oracle.jdbc.driver.OracleDriver”);
JAVA 规范中明确规定:所有的驱动程序必须在静态初始化代码块中将驱动注册到驱动程
序管理器中。
方式二:Driver drv = new oracle.jdbc.driver.OracleDriver();
DriverManager.registerDriver(drv);
方式三:通过设置系统属性 jdbc.drivers,编译时在虚拟机中加载驱动.
javac xxx.java ( 要确保驱动包在 classpath 里)
java –D jdbc.drivers=驱动全名 类名
4
必 须 掌
握!
使用系统属性名,加载驱动 -D 表示为系统属性赋值
附6: mysql 的 Driver 的全名 com.mysql.jdbc.Driver
SQLServer 的 Driver 的全名 com.microsoft.jdbc.sqlserver.SQLServerDriver
中驱动加载的时序图
以上是 JDBC 中驱动加载的时序图。时序图主要有以下 7 个动作:
1.<<<<<<<< 客户调用 Class.forName(“XXXDriver”)加载驱动。
2.<<<<<<<< 此时此驱动类首先在其静态语句块中初始化此驱动的实例。
3.<<<<<<<< 再向驱动管理器注册此驱动。
4.<<<<<<<< 客户向驱动管理器 DriverManager 调用 getConnection 方法,
5.<<<<<<<< DriverManager 调用注册到它上面的能够理解此 URL 的驱动建立一个连接,
6.<<<<<<<< 在该驱动中建立一个连接,一般会创建一个对应于数据库提供商的 XXXConnection
连接对象,
7.<<<<<<<< 驱动向客户返回此连接对象,不过在客户调用的 getConnection 方法中返回的为一个
java.sql.Connection 接口,而具体的驱动返回一个实现 java.sql.Connection 接口的具体类。
2 建立连接
conn=DriverManager.getConnection(“%&))*)+,-) 1521 ) ”, ”
User”,” Pasword”);
连接是通过 的静态方法 getConnection(.....)来得到的,这个方法
的实质是把参数传到实际的 Driver 中的 connect()方法中来获得数据库连接的。
Oracle URL 的格式:
jdbc:oracle:thin:(协议)@XXX.XXX.X.XXX:XXXX(IP 地址及端口号):XXXXXXX(所
使用的库名)
MySql URL 的写法6666 例: jdbc:mysql://192.168.8.21:3306/test
5
IP 地址及端口号和
数据库实例名
用 户 名 , 密
码
评论2
最新资源