绪论

MySQL是当今最流行的关系型数据库管理系统之一,本人认识的很多人里面数据库入门都是从MySQL入门的,其SQL语言简单易上手,所以成了不少人的必备技能
使用SQL语言可以很轻松的在数据库界面(指Navicat Premium 15)中操作数据库,但是在后边的大工程中你不能让服务端把数据放到文件目录中然后再进数据库管理系统读取文件,这样显得一点也不系统,所以Connector就出现了,它能让开发者通过各种语言操作数据库

其中一款就是JDBC(Java Database Connectivity),它能让你用Java实现操作数据库

安装与依赖

这里需要事先声明的是,本人使用的是MySQL8.0,看过很多博客相关内容,不少博客没有告知MySQL版本,以至于看到最后发现版本不对白看一通
菜鸟教程中的JDBC教程

从菜鸟教程我们可以得知

  • 1、MySQL 8.0 以上版本驱动包版本 mysql-connector-java-8.0.16.jar

  • 2、com.mysql.jdbc.Driver 更换为 com.mysql.cj.jdbc.Driver

只要你下载了MySQL Installer,里面就有提供JDBC的下载
1.jpg

当然也提供5和6版本的下载,下之前一定要看清楚
2.jpg

C:\Program Files (x86)\MySQL\Connector J 8.0
下完之后一般会放在C盘的Program Files (x86)中的MySQL文件夹中
打开里面有几个文件和一个Jar包,你可以选择在IDEA中直接依赖到这里,也可以将其直接复制到你工程路径中(推荐)

什么?你不会在IDEA里设置依赖?
虽然本博客与谷歌和百度达成了关系,但是还是在这里提一下
瞥见IDEA右上角那个文件夹然后三个小蓝方块的了吗,点击,然后在里面点加号就可以了
3.jpg

好的进入正题

基本架构

1.设置JDBE_DRIVER 与 DB_URL

这两个参数设置成静态final字符串变量就行了,格式如下

static final String JDBC_DRIVER = "com.mysql.jdbc.Driver";
static final String DB_URL = "jdbc:mysql://localhost:你的MySQL端口号/想要访问的数据库名称?useSSL=false&serverTimezone=UTC";

第二条语句举个例子

static final String DB_URL = "jdbc:mysql://localhost:3306/testdb?useSSL=false&serverTimezone=UTC";

2.设置USER与PASSWORD

决定你要以哪个用户身份访问数据库

static final String USER = "root";
static final String PASS = "******";

3.预先准备好所需内容

我们需要一个Connection类型,一个Statement类型,可以定义如下

	Connection connection = null;
        Statement stmt = null;

4.注册JDBC驱动,打开链接

  • 注册JDBC驱动
    Class.forName(JDBC_DRIVER);
  • 打开链接
connection = DriverManager.getConnection(DB_URL,USER,PASS);

5.设置连接关闭

在末尾别忘了把连接切断

stmt.close();
connection.close();

6.错误处理

上述的这些内容实际上都包含在一个try-catch里边,因为JDBC需要错误catch

完整架构如下

 try{
            // 注册 JDBC 驱动
            Class.forName(JDBC_DRIVER);

            // 打开链接
            System.out.println("连接数据库...");
            connection = DriverManager.getConnection(DB_URL,USER,PASS);
            stmt = connection.createStatement();
            
		/*

		在此处进行代码编写

                */  
	

            stmt.close();
            conn.close();
        }catch(SQLException se){
            // 处理 JDBC 错误
            se.printStackTrace();
        }catch(Exception e){
            // 处理 Class.forName 错误
            e.printStackTrace();
        }finally{
            // 关闭资源
            try{
                if(stmt!=null) stmt.close();
            }catch(SQLException se2){
            }// 什么都不做
            try{
                if(connection!=null) connection.close();
            }catch(SQLException se){
                se.printStackTrace();
            }
        }

基本操作1——查询

首先要介绍的就是查询操作
本人建议最好在文本编辑工具比如notepad里面完成语句的编写,然后再粘贴到IDEA里,语句同样也是字符串类型的

String sql;
sql = "SELECT FIRST_NAME, LAST_NAME, AGE,INCOME FROM employee";

然后定义一个结果集来存储数据库返回的结果,类似迭代器
ResultSet rs = stmt.executeQuery(sql);
其中如果没有返回结果的话也可以直接这样
stmt.executeQuery(sql);
这里进行操作的是数据库中已经定义好了的表employee,如果没有定义表的大佬们最好还是先定义了再进行操作
提前定义好了的表

这时候如果没有意外的话,结果已经存在rs中了,接下来是输出操作

 while(rs.next()){
                // 通过字段检索
                String FIRST_NAME  = rs.getString("FIRST_NAME");
                String LAST_NAME = rs.getString("LAST_NAME");
                int AGE = rs.getInt("AGE");
                int INCOME = rs.getInt("INCOME");

                // 输出数据
                System.out.print("FIRST_NAME: " + FIRST_NAME);
                System.out.print(", LAST_NAME: " + LAST_NAME);
                System.out.print(", 年龄: " + AGE);
                System.out.print(", 收入: " + INCOME);
                System.out.print("\n");
            }

注意你在数据库中定义的字段类型要相符,否则会报错
执行结果如下图
4.jpg

完全可以像平常在数据库中那样进行查询

sql = "SELECT FIRST_NAME, LAST_NAME, AGE,INCOME FROM employee WHERE INCOME<3000";

查询收入小于3000的员工

基本操作2——CREATE TABLE

如果你的服务端要建立一个新的数据集,那就涉及到建表操作

SQL语言部分不过多阐述

String sql2="CREATE TABLE `city` (\n" +
                    "  `id` int(11) NOT NULL AUTO_INCREMENT,\n" +
                    "  `name` char(20) NOT NULL DEFAULT '' COMMENT '城市名称',\n" +
                    "  `population` varchar(255) NOT NULL DEFAULT '',\n" +
                    "  `trainNum` int(11) NOT NULL DEFAULT '0' COMMENT '火车站数',\n" +
                    "  `country` char(10) NOT NULL DEFAULT '' COMMENT '国家',\n" +
                    "  PRIMARY KEY (`id`)\n" +
                    ") ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8;";

然后执行语句
stmt.execute(sql2);
注意不是executeQuery,executeQuery只能执行查询语句
运行之后发现直接Goodbye了,然后到Navicat里一看,诶,表已经建好了

SHOW TABLES

SELECT * FROM city

此时表中还没有任何数据

基本操作3——插入数据

操作和前一个操作一摸一样,就是把建表语句换成了插入语句

INSERT INTO `city` 
	VALUES
	('1', '北京','2154.2万','5','China'),
	('2', '上海','2423.78万','4','China'),
	('3', '巴黎','1100万','4','France'),
	('3', '伦敦','890万','4','UK');

执行语句
stmt.execute(sql3);
此时返回Navicat可以发现数据已经成功插入表中了
8.jpg

总结

更多JDBC功能还请大家自己去探索了
JDBC很好的实现了服务端与数据库之间的交换,对于以后开发B/S架构时的数据处理有着扎实作用

Q.E.D.

知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议