这里写目录标题
- 一、前言
- 二、DriverManager
- 1.API帮助文档
- 2.源码阅读
- 3.获取连接
- 三、Connection
- 1.作用
- 2.获取执行对象
- 3.事务管理
- 4.代码实现事务管理
- 四、结语
这篇文章中会对【JavaWeb | JDBC概述及IDEA连接MySQL】中提到的API做出详细的解释帮助大家理解加深印象以便于在接下来的学习过程中不用去死记硬背每一行代码而是理解了去编写代码知道原理在面试中也是很重要的
二、DriverManager1.API帮助文档
从帮助文档中我们知道要想注册给定驱动程序JDBC就需要调用deregisterDriver(Driver driver)方法所以我们就要去看一下Java底层源码是怎么写的
2.源码阅读
这里我们选中注册驱动中的 Driver 后 CtrlB 查看源码 在该类中的静态代码块中已经执行了 DriverManager 对象的 registerDriver() 方法进行驱动的注册了那么我们只需要加载 Driver 类该静态代码块就会执行。而class.forName()方法又可以用来载入类因此Class.forName("com.mysql.jdbc.Driver");就可以加载 Driver 类
在MySQL5.0后的驱动包可以不需要注册驱动因为它会自动加载jar包文件中的启动类
3.获取连接
url
这里写连接路径格式如下
jdbc:mysql://ip地址(域名):端口号/数据库名称?参数键值对1 "jdbc:mysql://localhost:3306/test?useSSLfalse";
这里 useSSLfalse 可以解决红色警告提示
如果连接的是本机mysql服务器并且mysql服务默认端口是3306则url可以简写为
jdbc:mysql:///数据库名称?参数键值对
user 用户名
poassword 密码
三、Connection1.作用
-
获取执行 SQL 的对象
-
管理事务
2.获取执行对象
预编译SQL的执行SQL对象防止SQL注入
PreparedStatement prepareStatement(sql)
通过这种方式获取的 PreparedStatement SQL语句执行对象是我们一会重点要进行讲解的它可以防止SQL注入。
执行存储过程的对象
CallableStatement prepareCall(sql)
3.事务管理
开启事务
setAutoCommit(false);
autoCommit - 为 true 表示启用自动提交模式为 false 表示禁用自动提交模式
提交事务
commit();
回滚事务
rollback();
4.代码实现事务管理
当SQL语句发生异常时需要抛出异常所以在使用try…catch语句的时候将开启事物和提交事务放在try语句中将回滚事务放在catch语句中用来抓取异常这样当语句有错误时就能抛出异常并回滚事务如果对事务的概念不熟悉可以看这篇文章回顾
import java.sql.Connection;import java.sql.DriverManager;import java.sql.SQLException;import java.sql.Statement;public class jdbcDemo1 { public static void main(String[] args) throws Exception { //注册驱动 Class.forName("com.mysql.jdbc.Driver"); //获取连接 String url "jdbc:mysql://localhost:3306/test?useSSLfalse"; String username "root"; String password "123456"; Connection c DriverManager.getConnection(url,username,password); //定义sql String sql "update user set money 5000 where id 1 "; //获取执行sql的对象 Statement stmt c.createStatement(); try { //开启事务 c.setAutoCommit(false); //执行sql int count stmt.executeUpdate(sql); //处理结果 System.out.println(count); //程序运行到此处说明没有出现任何问题则需求提交事务 c.commit(); } catch (SQLException e) { //回滚事务 //程序在出现异常时会执行到这个地方此时就需要回滚事务 c.rollback(); e.printStackTrace(); } //释放资源 stmt.close(); c.close(); }} 四、结语
接下来会继续讲述JDBC有关API