一.首先我们看看什么是JDBC
1.JDBC全称是Java DataBase Connectivity,是可用于Java ApI(应用程序设计接口),是连接数据库和Java应用程序和Java应用程序的纽带。JDBC是一种底层ApI,在访问数据库时需要业务逻辑层中嵌入sql语句。
2.其任务是:
(1)与数据库建立一个连接;
(2)向数据库发送sql语句;
(3)处理数据库返回结果;
3.JDBC的总体结构:应用程序,驱动管理器,驱动程序和数据源。
二.JDBC中常用的接口和类
1.DriverManager类:
DriverManager类是JDBC的管理层,用于管理数据库中的驱动程序。在操指定数据库之前,需要用Java中Class类的静态方法forName(String class Name)加载指定的数据库的驱动程序。
例:加载MySQL数据库驱动程序(包名为:mysql_connector_java_8.X.X.jar)的代码如下:
try{
Class.forName("com.mysql.cj.jdbc.Driver");//加载Mysql数据库驱动
}Catch{ClassNotFoundException e){
e. printStackTrace();
}
加载完载相应数据库的驱动程序后,Java会自动将驱动程序的实例注册到DriverManager
类中,这时即可通过DriverManager类的相关方法连接的相关的数据库。
2.DriverManager类的常用方法:
(1)getConnection(String url,String user,String password):指定3个入口参数(依次是连接数据库的URL、用户名、密码)来获取与数据库的连接。
(2)setLogin Timeout():获取驱动程序试图登录到某一数据库时可以等待的最长时间,以秒为单位。
(3)println(string message):将一条消息打印到当前的JDBC日志流中。
使用DriverManager连接本地MySQL数据库代码如下:
DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/test?useUncode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai&zeroDateTimeBaehavior=CONVERT_TO_NULL&allowPublicKeyRetrieval=true","root","password");
在上述连接中,127.0.0.1表示本地IP地址,3306是MySQL的默认端口,test是数据库的名称
userUnicode用来启动Unicode字符集,characterEncoding指定字符集为UTF1-8,useSSL指明不启用SSL连接,serverTimezone将时区定为中国,zeroDateTimeBehavior让空白日期以null形式返回,allowPublicKeyRetrieval允许客户从服务器获取公钥。
3.Connection接口
Connection接口代表与特定的数据库的连接,在连接上下文中执行sql语句并返回结果。
常用方法:
(1)createStatement():创建Statement对象。
(2)preparedStatement():创建预处理对象。
(3)commit():使所用上一次提交/回滚后进行的更改成为持久更改,并释放Connection对象当前持有的所有数据库锁。
(4)roolback:取消在当前事务中进行的所有更改,并释放Connection对象当前持有的所有数据库锁。
(5)close():立即释放此Connection对象的数据库和JDBC资源,而不是等待他们被自动释放。
4.Statement接口
Statement接口用于在已经建立连接的基础上向数据库发送sql语句。在JDBC中有三种Statement对象,分别是Statement、PreparedStatement和CallableStatement。Statement对象用于执行不同参数的简单sql语句;PreparedStatement继承Statement,用来执行动态sql语句,将被预编译并保存Prepared实例中可反复执行该sql语句;CallableStatement继承了PreparedStatement,用于执行对数据库储存过程的调用。
Statement接口的常用方法:
(1)execute(String sql):执行静态的SELECT语句,该语句可能返回多个结果集。
(2)executeQuery(String sql):执行给定的sql语句,该语句返回单个ResultSet对象。
(3)clearBatch:清空此Statement对象的当前sql命令列表。
(4)executeBatch():将命令提交给数据库来执行,如果全部命令执行成功,则返回更新计数组成的数组。数组元素的排序与SQL语句的添加顺序对应。
(5)addBatch(String SQL)将给定的SQL命令添加到此Statement对象的当前命令列表中。如果驱动程序不支持批量处理。将抛开异常。
(6)close()释放Statement实例占用的数据库和JDBC的资源。
5.ResultSet接口
ResultSet接口类似于一个临时表,用来暂时存放数据库查询操作所带来的结果集。ResultSet实例具有指向当前数据行的指针,指针开始的位置在第一条记录的前面,通过next()方法可将指针向下移。