后端与中间件 · 教程

04.连接到服务端

同学,MySQL数据库,一般指的MySQL服务端。但是MySQL自己呢也有一个客户端。就是我们使用 mysql 在shell窗口中连接数据库时,其实这就是以一个客户端的身份去连接到MySQL的服务端的。

本章,就介绍下常用连接数据库的方式:

  • MySQL client 连接
  • Java - JDBC 原生的连接
  • Python连接
  • go连接

MySQL client 连接数据库

这种连接方式,在上一章MySQL数据库的安装中我们已经使用过了。这里呢我们再详细的介绍一下。

首先,我们使用 mysql --help 命令,查看mysql 命令可以拼接的参数. 回车之后,我们可以看到很多的参数

本篇文章主要列举下,连接用到的参数:

  • -h : host ,表示需要连接的主机地址。 默认是localhost
  • -P : port , 表示要建立连接的主机端口。默认是 3306
  • -u : user , 表示建立连接使用的用户名。 默认是 root
  • -p : password , 表示建立连接使用的密码。

建立连接时,完整的命令是: mysql -h 127.0.0.1 -P 3306 -u root -p 表示使用 root 用户,连接127.0.0.1的3306端口。 回车之后,输入密码 ,回车,即可登陆成功。

10301-登录数据库.png

在明白了这几个选项之后,我们可以使用 mysql -p 来登录本机的MySQL服务端。

10302-登录数据库.png

建立连接之后,怎么退出呢? 有三种方式可以退出。

  • 输入 exit 命令
  • 输入 quit 命令
  • 使用 control + D

使用JDBC连接MySQL数据库

首先我们使用MySQL-client连接上数据库,用下面的命令去创建一个数据库和完成建表操作

mysql> drop database test01_jdbc;
Query OK, 0 rows affected (0.08 sec)

mysql> create database test01_jdbc;
Query OK, 1 row affected (0.06 sec)

mysql> use test01_jdbc;
Database changed
mysql> create table test1(id int primary key auto_increment, value int );
Query OK, 0 rows affected (0.29 sec)

接下来,你可以直接复制下面的代码,到你的编辑器里进行执行。源码我放到github里了。地址在公众号里哦

public class JDBCDemo {
    public static void main(String[] args) {

        Connection connection = null;
        PreparedStatement preparedStatement = null;
        ResultSet resultSet = null;
        try {

            // 1.加载驱动
            Class.forName("com.mysql.cj.jdbc.Driver");
            // 换成你的数据库地址
            String url = "jdbc:mysql://10.127.138.75:3306/test01_jdbc";
            String username = "root";
            String password = "123456";
            /// 获取连接
            connection = DriverManager.getConnection(url, username, password);
            String sql = "show tables";
            // 创建 Statement
            preparedStatement = connection.prepareStatement(sql);
            // 执行结果,获取resultSet
            resultSet = preparedStatement.executeQuery();
            // 处理结果
            while (resultSet.next()) {
                System.out.println(resultSet.getString(1));
            }
        } catch (ClassNotFoundException | SQLException e) {
            e.printStackTrace();
        } finally {
            // 关闭连接
            if(null!=resultSet) {
                try {
                    resultSet.close();
                } catch (SQLException throwables) {
                    throwables.printStackTrace();
                }
            }
            if(null!=preparedStatement) {
                try {
                    preparedStatement.close();
                } catch (SQLException throwables) {
                    throwables.printStackTrace();
                }
            }
            if(null!=connection) {
                try {
                    connection.close();
                } catch (SQLException throwables) {
                    throwables.printStackTrace();
                }
            }
        }
    }
}

执行结果:

test1

这里呢,就简单的理解下,Java连接MySQL服务端的过程。实际的开发中也不会遇到这种写法,但是都是使用这种原理进行了封装和优化,比如数据库的连接池的使用。这里就理解下,使用Java实现了数据库的客户端连接。

其他语言连接数据库的方式,我放到github仓库里。有需要的自取哈。在公众号里回复【连接数据库】就可以获取啦~

最后,希望和你成为朋友,一起交流~

qrcode.jpg

配套资料 · 免费领取
本文属于「BACKEND」资料包范围:中间件源码阅读路线图。按 RocketMQ / Redis / MySQL 分章节的完整路线。
在公众号「方家小白」回复关键词 BACKEND 即可领取。全文无需关注即可阅读。
BACKEND