当前位置 : 主页 > 网络编程 > 其它编程 >

JavaWeb|JDBC相关API详解1(含源码阅读)

来源:互联网 收集:自由互联 发布时间:2023-07-02
本专栏主要是记录学习完JavaSE后学习JavaWeb部分的一些知识点总结以及遇到的一些问题等如果刚开始学习Java的小伙伴可以点击下方连接查看专栏本专栏地址如果刚开始学习Java的小伙伴可
本专栏主要是记录学习完JavaSE后学习JavaWeb部分的一些知识点总结以及遇到的一些问题等如果刚开始学习Java的小伙伴可以点击下方连接查看专栏本专栏地址如果刚开始学习Java的小伙伴可以点击下方连接查看专栏 本专栏地址JDBC Java入门篇 Java基础学习篇 Java进阶学习篇持续更新中Java进阶学习篇

在这里插入图片描述

这里写目录标题

  • 一、前言
  • 二、DriverManager
    • 1.API帮助文档
    • 2.源码阅读
    • 3.获取连接
  • 三、Connection
    • 1.作用
    • 2.获取执行对象
    • 3.事务管理
    • 4.代码实现事务管理
  • 四、结语
一、前言

这篇文章中会对【JavaWeb | JDBC概述及IDEA连接MySQL】中提到的API做出详细的解释帮助大家理解加深印象以便于在接下来的学习过程中不用去死记硬背每一行代码而是理解了去编写代码知道原理在面试中也是很重要的

二、DriverManager

1.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 密码

三、Connection

1.作用

  • 获取执行 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

上一篇:esp32s3vscode环境搭建及问题解决
下一篇:没有了
网友评论