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框,然后开始写代码了。

二 jdbc链接


通常情况下连接url设置成这样即可
协议名://IP地址:端口号/数据库名?参数1&参数2&...
例如
jdbc:mysql://localhost:3306/databaseName?useSSL=false&serverTimezone=UTC&characterEncoding=UTF-8
详解:

参数说明
jdbc:mysql协议
localhost:3306localhost是本机地址127.0.0.1 , 3306 端口名,是mysql开启的服务,如果上述(配置一)的mysql服务未开启,会报 com.mysql.cj.jdbc.exceptions.CommunicationsException: Communications link failure 的异常
databaseName数据库的名字,如果没有此数据库会报SQLSyntaxErrorException: Unknown database 'xxx',的异常
useSSL=false在web领域要用到,指是否开启ssl安全连接,但MySQL 8.0 以上版本不需要建立 SSL 连接,需要关闭。
serverTimezone=UTC设置时区
characterEncoding=UTF-8设置编码格式,不设置很可能造成乱码。

实战:

这里博主提前准备好了一个数据库,名字是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字段的值
  • MYSQL8.0+使用jbdc的连接,与以往版本的不同
版本类名
MYSQL 8.0+Class.forName(com.mysql.cj.jdbc.Driver
MYSQL 8.0 以下Class.forName(com.mysql.jdbc.Driver
  • 上面2个参数不设置好会报ClassNotFoundException的异常
import java.sql.*;//导包
//新建一个测试类
public class MyJDBC {

    String databaseName="skeleton";//数据库名
    String user = "root";//使用管理员账号启动
    String pwd = "skeletonmysql";//数据库密码
    String URL = "jdbc:mysql://localhost:3306/"+databaseName+"?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();
            }
        }
    }
}

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


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

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值