目录
一、JDBC介绍
JDBC来历:
- ODBC:Open DataBase Connectivity、开放数据库连接
- ODBC允许应用程序可以通过一组通用的API访问不同的数据库管理系统
- ODBC应用可以在不同的数据库之间切换
- JDBC是模仿了ODBC的设计
JDBC概念:
JDBC(Java DataBase Connectivity)是Java和数据库之间的一个桥梁,是一个规范而不是一个实现,能够执行SQL语句。它由一组用Java语言编写的类和接口组成。各种不同类型的数据库都有相应的实现。
- Java运行平台的核心类库中的一部分
- 提供了访问裁据库的API
- Java透接救据年的规范〔标准)
- 一些主和接口组成
JDBC作用:
- 规避数据库的不同,为程序开发人员访问敷据库提供统一的编程接口,即为API。
JDBC功能:
- 通过这些类和接口可以实现对裁据库中表记录的操作:插入、删除、修改、查询。
二、JDBC驱动
JDBC-ODBC桥:
- 最早实现的JDBC驱动程序,主要目的是为了快速推广JDBC,可以方便的用于测试,不太适合产品的开发。
- 将JDBCAP1映射到ODBCAP1,不是多线程的,不适合在要求并行访问数据库的情况下使用。-目前,不再建议使用JDBC-ODBC桥。
JDBC驱动类型2
JAVA程序和本地代码:
- 由部分Java程序和部分本地代码组成一用于与数据库的客户端AP1进行通信
- 在使用这种驱动程序之前,不仅需要安装Java类库,还需要安装一些与平台相关的代码
JDBC驱动类型3
纯Java类库:
- 使用一种与具体数据辟无关的协议将数据库请求发送给服务器构件(中间件服务器)
- 然后构件再将数据库请求翻译成特定的数据库协议
- 这种驱动支持三层结构的JDBC访问方式
- 主要用于Applet阶段,通过Applet访问数据辟
JDBC驱动类型4
纯Java类库:
- 直接与数据库实例交互
- 智能的,它知道数据库使用的底层协议
- 这种驱动是目前最流行的JDBC驱动
三、JDBC经典用法
1.JDBC常用的接口和类
- 支持JDBCAPI的类和主要接口封装在
- java.sql包
- javax.sql包
2.主要的类和接口
- java.sql.Driver接口
- java.sql.DriverManager类
- java.sql.Connection接口
- java.sql.Statement接口
- java.sql.ResultSet接口
- java.sql.sQLException类
Driver接口
- 每个驱动程序类必须实现的接口。
- DriverManager会试着加载尽可能多的它可以找到的驱动程序
- 对于任何给定连接请求,它会让每个驱动程序依次试着连接到目标URL。
DriverManager类
用于管理JDBC驱动的服务类
主要功能
- 获取Connection对象,用来获得url对应数据库的连接
- public static syncronized ConnectiongetConnection(Stringurl.String user,String password) throws sQLException
- url-jdbc:subprotocol:subname形式的数据辟url
- user-数据辟用户,连接是为该用户建立的
- password-用户的密码
Connection接口
数据库连接对象
1.每个Connection代表一个物理连接会话
2.要想访问数据库,必须先获得数据库连接
3.这个接口中的常用方法:
- Statement createStatement( )throws sQLException
- 创建一个Staternent 对象
- 将SQL语句发送到裁据库
connection接口的其它方法
1.PreparedStatement prepareStatement(String sql)throws SQLException
- 创建一个PreparedStatement对象
- 可将参数化的SQL语句发送到数据库进行预编译
2.CallableStatement prepareCall(String sql) throwsSQLException
- 创建一个CallableStatement对象
- 调用救据库存储过程
三种方法之间的关系
- 三个方法都是返回用于执行SQL语句的Statement对象
- -PreparedStatement、CallableStatement是Statement的子接口
- 一只有获得了Statement之后才可以执行SQL语句
Statement接口
1.执行SQL语句的接口
- DDL语句
- DCL语句
- DML语句
- SQL查询
- 执行SQL查询,返回查询到的结果集
2.这个接口中的常用方法:
- ResultSet exeauteQuery(String sql) throwsSQLException
- 执行给定的SQL查询语甸
- 返回单个ResultSet对象·只能用于查询
Statement接口其它方法
1.int executeUpdate(String sql) throws sQLException
- 执行DML语句
- 返回受影响的行数一执行DDL
- 执行DDL时返回0
2.boolean execute(String sql) throws SQLExceptior一执行任何SQL语句
- 如果执行后第一个结果为ResultSet对象,返回true
- 如果返回执行后第一个结果为受影响的行数或没有任何结果,返回false
PreparedStatement接口
1.预编译的SQL语句的对象
- 允许数据库预编译SQL语句(通常这些SQL语6带有参数)
- 以后每次只改变SQL命令的参数,避免数据库每次都需要编译SQL语句,因此性能更好
- 使用PreparedStatement挑行SQL语句,只需为预编译的SQL语句传入参数即可
- void setXXX(int paramlndex,XXX value)
- 据传入的参数类型不同,需要使用不同的方法
- 传入的值极据索引传给SQL语句中指定位置的参裁
PreparedStatement接口方法
- execute ( )
- executeQuery ( )
- executeUpdate ( )
- 一这三个方法无须接收SQL字符串,因为已经预编译了SQL命令
ResultSet接口
1.结果集对象
- 包含访问查询结果的方法
- 可以通过列索引或列名获得列数据
2.常用方法
- void close():释放ResultSet对象
- -boolean absolute(int row):将结果集的记录指针移动到第row行,如知果row是负数.刘移动到末尾的绝对行位置
ResultSet接口其它方法
1.void beforeFirst()
- 将ResultSet的记录指针定位到首行之前,这是ResultSet结果集记录指针的初始状态。
2.boolean first()
- 将ResultSet的记录指针定位到首行。如果移动后的记录指针指向一条有效记录,则该方法返回true。
3.boolean previous()
- 将ResultSet的记录指针定位到上一行。如果移动后的记录指针指向一条有效记录,则该方法返true。
4.boolean next()
- 将ResultSet的记录指针定位到下一行。如果移动后的记录指针指向一条有效记录,则该方法返回true
5.boolean last()
- 将ResultSet的记录指针定位到末行。如果移动后的记录指针指向一条有效记录,则该方法返回true。
6.void afterlast()
- 将ResultSet的记录指针定位到末行之后。
四、JDBC编程步骤
1.加载驱动
1.使用Class类下的静态方法forName来加载驱动
2.格式如下面的代码:
- Class.forName(driverClass);
- driverClass为数据库驱动类所对应的字符串例如
3.加载MySQL驱动
- Class.forName(com.mysql.jdbc.Driver )
4.加载jdbc-odbc桥接器驱动
- Class.forNarne("sun.jdbx.odb.JdbxOdbxDriver")
2.创建连接
1.通过DriverManager获取数据库连接
2.格式如下:
- DriverManager.getConnection(Stringur1,String user,String pass)
- 上面的三个参数分别指的是
- 数据库的url
- 登录数据辟的用户名
- 用户密码(通常由DBA分配)
- 该用户还应该具有相应的权限,才能撬行相应的SQL语句
3.准备语句
1.即通过Connection对象创建Statement对象
2.方法有三个
- createStatement0:创建基本的Statement对象。
- prepareStatement(String sql):根据传入的SQL语句创建预编译的Statement对象。
- prepareCall(Stringsql):根据传入的SQL语句创建CallableStatement对象。
4.执行库操作
1.使用Statement对象执行SQL语句
2.所有Statement对象都有以下三个方法:
- execute():执行任何SQL语甸,通用但不好用。
- executeUpdate0:执行DML和DDL语句;执行DML语句返回受SQL语句影响的行数;执行DDL语句返回0。
- executeQuery0:只能执行查询语句;返回代表查询结果的ResultSet对象
5.处理结果
执行的SQL语句是查询语句:
- 将返回一个ResultSet对象来取出查询结果
- ResultSet对象提供了两类方法:
- next0. previous0._first0.last0.beforeFirst0.afterLast,absolute0等:用于移动记录指针的方法【行上的移动和指定】
- getXXX(参数):获取记录指针指向行,特定列的值【某行列上的移动和指定;可以使眉到索引作为参教【性能划】;可以使用列名作为参敷【可读性强】
- ResultSet对象的实质是一个查询结果集,在逻辑结构上非常类似于一个表
6.收回资源
收数据库资源
- 关闭ResultSet
- 关闭Statement
- 关闭Connection