当前位置:   article > 正文

MySQL-数据库驱动和JDBC_mysql jdbc驱动

mysql jdbc驱动

JDBC

在学习JDBC之前,我们需要了解一个概念——驱动。

什么是驱动呢?

驱动是驱动程序的缩写,是指直接工作在各种硬件设备上的软件,其“驱动”这个名称也十分形象的指明了它的功能。正是通过驱动程序,各种硬件设备才能正常运行,达到既定的工作效果。例如声卡驱动、显卡驱动等等,所以数据库,也当然会有驱动。

我们的程序也会通过数据库驱动,和数据库“打交道”。

而SUN公司为了简化开发人员的(对数据库的统一)操作,提供了一个(Java操作数据库)规范,俗称JDBC,这些规范的实现由具体的厂商去做,对于开发人员来说,我们只需要掌握JDBC接口的操作即可!

Java中,要想操作数据库,首先需要导入Java默认就有的java.sql包和javax.sql包之外,还需要导入一个数据库驱动包mysql-connector-java-8.0.26,下载地址:https://mvnrepository.com/artifact/mysql/mysql-connector-java/8.0.26

测试JDBC程序

首先还是通过一些例子来学习JDBC,首先创建一个测试数据库:

-- JDBC
CREATE DATABASE jdbcStudy CHARACTER SET utf8 COLLATE utf8_general_ci
USE jdbcStudy
DROP TABLE `users`
CREATE TABLE `users`(
  `id` INT NOT NULL,
  `name` VARCHAR(40),
  `password` VARCHAR(40),
  `email` VARCHAR(60),
  `brith` DATE
);
INSERT INTO `users`(`id`,`name`,`password`,`email`,`brith`) 
VALUES
(1,'张三','123456','127*****236@qq.com','1999-06-20'),
(2,'李四','123456','128*****351@qq.com','1997-08-30'),
(3,'王五','123456','126*****234@qq.com','1996-07-12');
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

然后导入我们刚刚下载的数据库驱动:新建一个project后,创建一个lib文件夹,然后驱动文件移动至该文件夹——

在这里插入图片描述

编写测试代码:

// 测试
public class JDBCFirstDemo {
   
    public static void main(String[] args) throws ClassNotFoundException, SQLException {
   
        // 1. 加载驱动(注意,MySQL8.0之前的版本的字符串为"com.mysql.jdbc.Driver")
        Class.forName("com.mysql.cj.jdbc.Driver");
        // 2. 用户信息和url(问号之后的参数分别是:支持中文,设置字符编码为utf8,设置安全链接)
        String url = "jdbc:mysql://localhost:3306/jdbcstudy?useUnicode=true&characterEncoding=utf8&useSSL=true";
        String name = "root";
        String password = "12345";
        // 3. 连接成功,数据库对象 connection代表数据库
        Connection connection = DriverManager.getConnection(url, name, password);
        // 4. 执行SQL的对象 Statement是执行SQL的对象
        Statement statement = connection.createStatement();
        // 5. 执行SQL的对象去执行SQL,可能存在结果,查看返回结果
        String sql = "SELECT * FROM `users`";
        ResultSet resultSet = statement.executeQuery(sql); // 返回的结果集,结果集中封装了我们全部的查询出来的结果
        while(resultSet.next()) {
   
            System.out.println("id=" + resultSet.getObject("id"));
            System.out.println("name=" + resultSet.getObject("name"));
            System.out.println("password=" + resultSet.getObject("password"));
            System.out.println("email=" + resultSet.getObject("email"));
            System.out.println("birth=" + resultSet.getObject("birth"));
        }
        // 6. 释放连接
        resultSet.close();
        statement.close();
        connection.close();
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32

如果上述代码报错,可以试着将useSSL修改为false,或者再url后面添加时区字段serverTimezone=UTC,如果还是报错,建议这边再检查一下代码或者是问万能的百度~

总结一下步骤:

1、加载驱动

2、连接数据库DriverManager

3、获得执行SQL对象Statement

4、获得返回的结果集

5、释放连接

扩展:为什么在第一个步骤中,Class不需要返回对象呢?首先我们观察一下整体的代码,并不需要返回这个Class对象,其次呢,在原本的写法中,是有一个DriverManager.registerDriver(new com.mysql.cj.jdbc.Driver());的写法,意思是注册驱动,但是我们查看Driver类的源代码可以发现,它执行了一个静态代码类,而该类里面已经执行了一次注册驱动,所以再写这串代码就显得有些多余了。

关于Connection:

Connection connection = DriverManager.getConnection(url, name, password);
// connection代表数据库,我们可以在这里进行一些数据库级别的操作,例如设置数据库自动提交,以及事务的提交和事务回滚等
connection.setAutoCommit(true);
connection.commit();
connection.rollback();
  • 1
  • 2
  • 3
  • 4
  • 5

关于url:

// MySQL -- 端口号默认为3306
String url = "jdbc:mysql://localhost:3306/jdbcstudy?" +
	"useUnicode=true&characterEncoding=utf8&useSSL=true";
//协议://主机地址:端口号/数据库名?参数1&参数2&参数3...
//Oralce -- 端口号默认为1521
// jdbc:oralce:thin:@localhost:1521:sid
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

关于Statement:

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/木道寻08/article/detail/895596
推荐阅读
相关标签
  

闽ICP备14008679号