- 一、理解JDBC原理
【关系型数据库】
Oracle、MySQL等
当前信息管理的主流技术
RDBMS-relational database management system
一对多,通过外键(cid班级id)关联存储;多对多关系存储,通过关系表(uid用户id,rid角色id)关联存储
JDBC是Java数据库连接技术的简称,提供连接各种常用数据库的能力
【什么是JDBC】
JDBC(Java Database Connectivity)是为Java程序中访问数据库而设计的一组Java API, JDBC中包括了一组由Java语言书写的接口和类,它们都是独立于特定的DBMS。JDBC是Java数据库应用开发中的一项核心技术。
JDBC是Java SE的一部分,由java.sql和javax.sql包组成。
有了JDBC,程序员可以方便地在Java语言中使用SQL语言,从而使Java应用程序或Java Applet可以实现对分布在网络上的各种关系数据库的访问.
使用了JDBC以后,程序员可以将精力集中于上层的功能实现,而不必关心底层与具体的DBMS的连接和访问过程。
【JDBC程序的工作原理】
JDBC API
- 提供者:Sun公司
- 内容:供程序员调用的接口与类,集成在java.sql和javax.sql包中,如:
- DriverManager类
- Connection接口
- Statement接口
- ResultSet接口
DriverManager
- 提供者:Sun公司
- 作用:管理各种不同的JDBC驱动
JDBC 驱动
- 提供者:数据库厂商
- 作用:负责连接各种不同的数据库
JDBC包含两部分:与数据库独立的API(面向程序开发人员的JDBC API)和面向底层的JDBC Driver API(数据库厂商完成)。
面向程序开发人员的JDBC API被描述成为抽象的Java接口,通过这些接口应用程序可以对某个数据库打开连接,执行SQL语句并且处理结果。
JDBC的驱动管理器负责管理针对各种类型DBMS的JDBC驱动程序。也负责和用户的应用程序交互,为Java应用程序建立数据库连接。
Java应用程序通过JDBC API向JDBC驱动管理器发出请求,指定要装载的JDBC驱动程序类型和数据源。驱动管理器会根据这些要求装载合适的JDBC驱动程序并使该驱动连接相应的数据源。一旦连接成功,该JDBC驱动程序就会负责Java应用与该数据源的一切交互,即作为中间的翻译将Java应用中对JDBC API的调用转换成特定DBMS能够理解的命令,将数据库返回的结果转换成Java程序所能识别的数据。
【主要SQL语句】
- SELECT
- INSERT
- DELETE
- UPDATE
- CREATE
- DROP
【JDBC编程接口】
JDBC是进行数据库连接的抽象层
JDBC支持和ANSI SQL-2标准相兼容的数据库(支持标准的SQL语句)
【JDBC的两个部分】
- 数据库厂商提供的实现接口(spi)
- 应用程序实现的编程接口(api)
【重要的接口】
- java.sql.Connection
- java.sql.Statement
- java.sql.PreparedStatement
- java.sql.CallableStatement
- java.sql.ResultSet
- java.sql.Driver
【JDBC API】
JDBC API可做三件事:与数据库建立连接、执行SQL 语句、处理结果
- DriverManager :依据数据库的不同,管理JDBC驱动
- Connection :负责连接数据库并担任传送数据的任务
- Statement :由 Connection 产生、负责执行SQL语句
- ResultSet:负责保存Statement执行后所产生的查询结果
【JDBC API层次结构】
【JDBC驱动】
JDBC驱动由数据库厂商提供
- 在个人开发与测试中,可以使用JDBC-ODBC桥连方式(基本不使用)(依赖于Windows操作系统)
- 在生产型开发中,推荐使用纯Java驱动方式(最为常用)
【JDBC 驱动类型】
JDBC驱动有四种类型:JDBC-ODBC桥、本地API部分Java驱动、网络协议完全Java驱动(建议使用这种)、本地协议完全Java驱动。
- 1.JDBC-ODBC桥(JDBC-ODBC bridge)
这种驱动实际上是利用了现有的ODBC,将JDBC调用翻译为ODBC的调用。这种类型的驱动使Java应用可以访问所有支持ODBC的DBMS。
- 2.本地API部分Java驱动(native-API java driver)
这种驱动方式将数据库厂商的特殊协议转换成Java代码及二进制类码,使Java数据库方与数据库服务器通信。
JDBC驱动—JDBC-ODBC桥
- 使用JDBC-ODBC桥方式连接数据库
- 将对JDBC API的调用,转换为对另一组数据库连接API的调用
- 优点:可以访问所有ODBC可以访问的数据库
- 缺点:执行效率低、功能不够强大
ODBC(Open Database Connectivity,开放数据库互连)是微软公司开发的有关数据库的一个组成部分,它建立了一组规范,并提供了一组对数据库访问的标准API。这些API利用SQL来完成其大部分任务。ODBC本身也提供了对SQL语言的支持,用户可以直接将SQL语句送给ODBC。
不在Java应用程序中使用ODBC的原因:ODBC是一个C语言实现的API,从Java程序中调用本地的C程序会带来一系列类似安全性、健壮性的缺点。
JDBC-ODBC桥使用基本步骤:
- 建立ODBC数据源
- 使用jdbc-odbc桥来操纵
纯Java方式连接
- 3.网络协议完全Java驱动(net-protocol java driver)(适合在广域网中用,Internet等)
这种驱动器将JDBC指令转化成独立于DBMS的网络协议形式,再由服务器转化为特定DBMS的协议形式。有关DBMS的协议由各数据库厂商决定。这种驱动器可以链接到不同的数据库上,最为灵活。(完全遵循Java协议标准的)
- 4.本地协议完全Java驱动(native-protocol fully driver)(适合在局域网中用)
这种驱动器将JDBC指令转化成网络协议后不再转换,而是由DBMS直接使用。相当于客户机直接与服务器相连写,对局域网适用。
JDBC驱动—纯Java方式连接
- 使用纯Java方式连接数据库
- 由JDBC驱动直接访问数据库
- 优点:100% Java,快又可跨平台
- 缺点:访问不同的数据库需要下载专用的JDBC驱动
【驱动小结】
在这四种驱动器中,后两种“纯Java”的驱动器效率更高,也更具有通用性。但目前第一、第二类驱动器比较容易获得,使用不普遍。
应用程序、JDBC API、数据库驱动及数据库之间的关系
【连接数据库的步骤】
- 注册驱动 (只做一次)
- 建立连接(Connection)
- 创建执行SQL的语句(Statement)
- 执行语句
- 处理执行结果(ResultSet)
- 释放资源
连接数据库的步骤可以按如下的形象比喻来理解:
整个过程可以想像成: