使用JDBC操作数据库(IDEA编译器)

目录

JDBC的本质

​ JDBC好处

JDBC操作MySQL数据库

1.创建工程导入驱动jar包

2.编写测试代码

​相关问题


JDBC的本质

  • 官方(sun公司) 定义的一套操作所有关系型数据库的规则,即接口
  • 各个数据库厂商去实现这套接口,提供数据库驱动jar包
  • 我们可以使用这套接口(JDBC) 编程,真正执行的代码是驱动jar包中的实现类

JDBC好处

  • 各数据库厂商使用相同的接口,Java代码不需要针对不同数据库分别开发

  • 可随时替换底层数据库, 访问数据库的Java代码基本不变


    JDBC操作MySQL数据库

1.创建工程导入驱动jar包

01

02

03

2.编写测试代码

java 复制代码
package JDBC;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;

public class JDBCDemo {
    public static void main(String[] args) throws Exception {
          //1.注册驱动
        Class.forName("com.mysql.jdbc.Driver");
        //2.获取连接
        String url = "jdbc:mysql://127.0.0.1:3306/db01";
        String username = "root";
        String password = "123456";
        Connection conn = DriverManager.getConnection(url,username,password);
        //3.定义sql
        String sql = "update user set  password = 666666 where id = 1";
        //4.获取执行sql的对象Statement
        Statement stmt = conn.createStatement();
        //5.执行sql
        int count = stmt.executeUpdate(sql);
        //6.处理结果
        System.out.println(count);
        //7.释放资源
        stmt.close();
        conn.close();
    }
}

问题

关于//1.注册驱动 Class.forName("com.mysql.jdbc.Driver"); 为什么可以注册驱动成功?

我们找到如下内容就会发现我们下载的jar包中已经注册了

java 复制代码
// Driver 接口,所有数据库厂商必须实现的接口,表示这是一个驱动类。
public class Driver extends com.mysql.cj.jdbc.Driver {
    public Driver() throws SQLException {
    }

    static {
        System.err.println("Loading class `com.mysql.jdbc.Driver'. This is deprecated. The new driver class is `com.mysql.cj.jdbc.Driver'. The driver is automatically registered via the SPI and manual loading of the driver class is generally unnecessary.");
    }
}

从 JDBC3 开始,可以不用注册驱动而直接使用。Class.forName("com.mysql.jdbc.Driver"); 这句话可以省略。

相关推荐
蓝斯4974 小时前
[原创]《C#高级GDI+实战:从零开发一个流程图》第章:增加贝塞尔曲线,上、下、左、右连接点
java·c#·流程图
前端工作日常4 小时前
我学习到的Java 的 Service 分层:itf 和 impl 到底是什么?
java·后端
都叫我大帅哥5 小时前
Spring @Transactional 注解完全指南
java·spring
Java成神之路-5 小时前
G1 垃圾回收器 :SATB + TAMS核心机制深度解析
java·jvm
前端工作日常5 小时前
我学习到的JIT即时编译与机器码缓存失效
java·后端
带刺的坐椅5 小时前
Solon 的 10 种 HTTP 服务器:改一行依赖,换一个引擎
java·solon·jetty·undertow·mcp-server·htttp
xcLeigh6 小时前
Go入门:变量声明的五种方式详解
java·开发语言·golang
AI大模型-小华6 小时前
Codex 三方充值快速入门指南
java·前端·数据库·chatgpt·ai编程·codex·chatgpt pro
Mark_ZP7 小时前
【锁1】Synchronized vs ReentrantLock区别
java
立心者08 小时前
SpringBoot中使用TOTP实现MFA(多因素认证)
java·spring boot·后端