一、定义
JDBC:Java Database Connectivity,是一套面向对象的应用程序接口,指定了统一的访问关系型数据库的标准接口,是一种底层的API,主要有java.sql.*和javax.sql.*包中的一些类和接口组成。
二、工作原理
三、工作流程
四、常用的接口和类
在JDBC编程中对数据库的操作均使用JDK自带的API统一处理,通常与特定的数据库的驱动类是完全解耦的。所以掌握JAVA JDBC API(位于java.sql包下)即可掌握Java数据库编程 。
1、DriverManager类:用来管理数据库中的所有驱动程序,它是JDBC的管理者,作用于用户和驱动程序之间,跟踪可用的驱动程序,并在数据库的驱动程序之间建立连接
getConnection(String url , String user , String
password):指定3个参数的入口(依次是数据库的url、用户名、密码)来获取与数据库的连接;
setLoginTimeout():获取驱动程序试图登录到数据库时可以等待的最长时间(s); println(String
message):将一条消息打印到当前JDBC日志流中;
2、Connection接口:实现类由数据库提供,获取Connection对象通常有两种方式:一种是DriverManager的静态方法获取,一种是通过DataSource(数据源)对象获取。
- createStatement():创建Statement对象;
- prepareStatement():创建预处理对象prepareStatement();
- close():立即释放此Connection对象的数据库和JDBC资源,而不是等待它们被自动释放;
3、Statement接口:用于在已经建立连接的基础上向数据库发送SQL语句;分为三种Statement对象:Statement、PrepareStatement、CallableStatement。
Statement对象用于执行不带参数的简单的SQL语句;
- execute(String sql):执行静态的SELECT语句,该语句可能返回多个结果值;
- ecuteQuery(String sql):执行给定的SQL语句,该语句返回单个ResultSet对象:
- clearBatch():清空此Statement对象的当前SQL命令列表;
- executeBatch():将一批命令提交给数据库来执行,如果全部执行成功,则返回更新计数组成的数组。数组元素的排序与SQL语句的添加顺序对应;
- close():释放Statement实例占用的数据库和JDBC资源;
4、PreparaStatement接口:继承了Statement,用于执行动态的SQL语句;
特点:
- 参数化查询;
- 占位符:?下标从1开始;
- 占位符不能使用多值;
- SQL预编译 ;
- 性能比Statement高 ;
- 能阻止常见SQL注入攻击;
常用方法
- setXXX(int index , XXX k ):将指定位置的参数设置为对应类型的值;
- executeQuery():在此PrepareStatement对象中执行SQL查询,并返回该查询生成 的ResultSet对象
- executeUpdate():执行前面包含的参数的动态INSERT、UPDATE或者DELETE语句
5、ResultSet接口:类似于临时表,用来暂时存放数据库查询操作多获得·的结果集,里面的数据一行一行排列,每行有多个字段,并且有一个记录指针。
- getXXX(“ 列名”):以XXX类型获取此ResultSet对象的当前行的指定列值
- next():将指针向下移一行;
CallableStatement继承了PrepareStatement,用于执行对数据库的存储过程的调用;
五、JDBC优势
- Java语言访问数据库操作完全面向抽象接口编程
- 开发数据库应用不用限定在特定数据库厂商的API
- 程序的可移植性大大增强
六、演练实例
import java.sql.*;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java