JAVA【基础】jdbc 连接 MYSQL 8.0+ 从安装到使用——搭建开发环境

准备好以下:

知识:

  • java基础
  • mysql 基础
  • idea 软件基础
    (狗头保命)

MYSQL8.0+:

本文章使用的是mysql8.0.16进行教程

mysql-connector-java的jar包:

  • maven添加jar包依赖:
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.16</version>
        </dependency>

配置:

一 开启mysql服务

win10左下角,输入 cmd 先别急着回车!,等待搜索到命令提示符后,右键,以管理员身份运行。

在这里插入图片描述
输入 net start mysql80 开启mysql服务 ,mysql80是安装的时候,设置的服务名。
输入 net stop mysql80 关闭mysql服务 。
如下图所示:
在这里插入图片描述
如果不使用管理员身份开启,会造成以下错误。

在这里插入图片描述
开启mysql服务后就可以关闭cmd框,然后开始写代码了。

二 连接代码参数设置

  • MYSQL8.0+使用jbdc的连接,与以往版本的不同
连接 MYSQL8.0+
forname Class.forName(com.mysql.cj.jdbc.Driver
URL设置时区 serverTimezone=UTC
  • 上面2个参数不设置好会报ClassNotFoundException的异常
  • 通常情况下连接url设置成这样即可
  • jdbc:mysql://localhost:3306/mysqlname?useSSL=false&serverTimezone=UTC
url参数 说明
localhost localhost是本机地址127.0.0.1
:3306 端口名,是mysql开启的服务,如果上述(配置一)的mysql服务未开启,会报com.mysql.cj.jdbc.exceptions.CommunicationsException: Communications link failure 的异常
mysqlname 数据库的名字,如果没有此数据库会报SQLSyntaxErrorException: Unknown database 'xxx',的异常
useSSL=false 在web领域要用到,指是否开启ssl安全连接,但MySQL 8.0 以上版本不需要建立 SSL 连接,需要关闭。
serverTimezone=UTC 设置时区,不设置会报错

实战:

这里博主提前准备好了一个数据库,名字是skeleton,里面有一张user表
结构
在这里插入图片描述

会用到的方法 说明
Class.forName() 返回一个类,作用是要求JVM查找并加载指定的类,也就是说JVM会执行该类的静态代码段。
DriverManager.getConnection(url, user, pwd) 返回Connection对象,用于连接数据库
connection.createStatement() 返回Statement对象,用于查询数据库操作
statement.executeQuery(str) 执行查询语句
statement.execute(str) 执行语句,与上面不同的是,update,insert,delete等创建删除型语句,必须用这个函数执行,不然会抛以下异常:java.sql.SQLException: Can not issue data manipulation statements with executeQuery().
resultSet.next() 读取下一行数据
resultSet.getString(key) 获取查询到的数据中,key字段的值
import java.sql.*;//导包
//新建一个测试类
public class MyJDBC {

    String mysqlname="skeleton";//数据库名
    String user = "root";//使用管理员账号启动
    String pwd = "skeletonmysql";//数据库密码
    String URL = "jdbc:mysql://localhost:3306/"+mysqlname+"?useSSL=false&serverTimezone=UTC";
    String DRIVER = "com.mysql.cj.jdbc.Driver";


    public static void main(String[] args) {
        MyJDBC myJDBC = new MyJDBC();
        myJDBC.connect();
    }

    public void connect() {
        Connection connection = null;
        Statement statement = null;
        try {
            //启动JDBC驱动
            Class.forName(DRIVER);
            //链接数据库
            connection = DriverManager.getConnection(URL, user, pwd);
            //查询数据
            statement = connection.createStatement();
            //mysql语句
            String query = "SELECT * FROM User;";
            //查询数据
            ResultSet resultSet = statement.executeQuery(query);
            //展开结果集数据库
            while (resultSet.next()) {
                // 通过字段检索
                String user = resultSet.getString("user");
                int pwd = resultSet.getInt("pwd");
                int times = resultSet.getInt("times");
                // 输出数据
                System.out.println("user: " + user);
                System.out.println("pwd: " + pwd);
                System.out.println("times: " + times);
            }
            // 完成后关闭
            resultSet.close();
            statement.close();
            connection.close();
            //下面是异常处理
        } catch (SQLException | ClassNotFoundException e) {
            e.printStackTrace();
        } finally {
            try {
                if (statement != null)statement.close();
                if(connection!=null)connection.close();
            } catch (SQLException throwables) {
                throwables.printStackTrace();
            }
        }
    }
}

运行结果
在这里插入图片描述


以上就是本文内容,以后遇到更多知识将会补充。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章