7.1 JDBC简介
7.1.1 为什么需要JDBC
Java是通过JDBC技术实现对各种数据库访问的,JDBA是Java数据库连接(Java DataBase Connectivity)技术的简称,他充当了Java应用程序与各种不同数据库之间进行对话的媒介。他可以把数据持久性保存,这就是一种持久化机制。持久化:持久化是将程序中的数据在瞬时状态和持久状态见转换的机制。
7.1.2 JDBC的工作原理
1.JDBC API
JDBC API由Sun公司提供,其中提供了Java应用程序与各种不同数据库交互的标准解救,如Connection(连接)接口、Statement接口、ResultSet(结果集)接口、PrepardStatement接口等。开发者使用这些JDBC接口进行各类数据库操作。
2.JDBC Driver Manager
JDBC Driver Manager(驱动程序管理)有Sun公司提供,他是JDBC体系结构的支柱,负责管理各种不同的JDBC驱动,把Java应程序连接到相应的JDBC驱动程序上,位于JDK的java.sql包中。
3.JDBC驱动
JDBC驱动有各个数据库厂商或第三方中间件厂商提供,负责连接各种不同的数据库。
7.1.3 JDBC API介绍
JDBCAPI主要做三件事:与数据库建立连接、发送SQL语句、处理结果。
(1) DrivaerManager类:装载驱动程序,并为创建新的数据库连接提供支持。
(2) Connection接口:负责连接数据库并担任传送数据的任务。
(3) Statement接口:由Connection产生,负责执行SQL语句。
(4) ResultSet接口:负责保存和处理Statement执行后所产生的查询结果。
(5) PreparedStatement接口:Statement的子接口,也由Connection产生,同样负责执行SQL语句。Statement接口相比,PrepardStatement接口具有高安全性、高性能、高可读性和高可维护性的优点。
7.1.4 JDBC访问数据库的步骤
1)加载JDBC驱动
使用Class.forName()方法将给定的JDBC驱动类加载到Java虚拟机中。
2)与数据库建立连接
DriverManager类是JDBC的管理层,作用于用户和驱动程序之间。
3)发送SQL语句,并得到返回结果
一旦建立连接,就使用该连接创建Statement接口的对象,并将SQL语句传递给它所连接的是数据库。
4)处理返回结果
处理返回结果主要是针对查询操作的结果集,通过循环取出结果集中每条记录并做相应处理。
7.2 连接数据库
7.2.1 两种常用的驱动方式
JDBC驱动由数据库厂商或第三放中间厂商提供。在实际编程过程中,,有两种较为常用的驱动方式,第一种是JDBC-ODBC桥连方式,适用于个人开发与测试,他通过ODBC与数据库进行连接。另一种是纯Java驱动方式,它直接同数据库进行连接,在生产型开发中,推荐使用纯Java驱动方式。
7.2.2 使用JDBC-ODBC桥连方式连接数据库
JDBC-ODBC桥连就是将对JDBC API的调用转换为对另一组数据库连接(即ODBC)API的调用。
7.3 Statement接口和ResultSet接口
获取Connection对象后就可以进行各种数据库操作了,此时需要使用Connection对象创建Statement对象。Connection接口常用方法如表。
Connection接口常用方法
方法名称 |
作用 |
Void close() |
立即释放此Connection对象的数据库和JDBC资源 |
Statement createStatement() |
创建一个Statement对象Kauai将SQL语句发送到数据库 |
PreparedStatement preparedStatement(String sql) |
创建一个PreaparedStatement对象来将参数化的SQL语句发送到数据 |
Bollean isClosed() |
查询此Connection对象是否已经被关闭 |
Statement接口常用方法
方法名称 |
作用 |
ResuultSet executeQuery(String sql) |
可执行SQL查询获取ResulSet对象 |
Int executeUpdate(String sql) |
可执行插入、删除、更新的操作,返回值是执行该操作所影响的行数 |
Boolean exeute(String sql) |
可执行任意SQL语句,若结果为ResultSet对象,则返回true;若其为更新计数或者不存在任何结果,则返回false |
ResuoltSet接口常用方法及作用
方法名称 |
作用 |
Bollean next() |
将光标从当前位置向下移动一行 |
Bollean previous() |
将光标从当前位置上移动一行 |
Void close() |
关闭ResultSet对象 |
Int getInt(int columnIndex) |
以int的行驶获取结果集的那个钱行指定列号的值 |
Int getInt(String columnLable) |
以int的行驶获取结果集的那个钱行指定列名的值 |
Float getFloat(int columnIndex) |
以float的行驶获取结果集的那个钱行指定列号的值 |
Float getFloat(String columnIndex) |
以float的行驶获取结果集的那个钱行指定列名的值 |
String getString(int columnIdex) |
以String的行驶获取结果集的那个钱行指定列号的值 |
String getString(String columnLable) |
以String的行驶获取结果集的那个钱行指定列名的值 |
Int getRow() |
得到光标当前所指行的行号 |
Boolean absolute(int row) |
光标移动到row指定的行 |