数据库第一课 - 在Java中如何通过JDBC使用MySQL数据库

数据库第一课 - 在Java中如何通过JDBC使用MySQL数据库

为什么要使用数据库

数据的存放方式有很多种,例如存放在Java的内存当中,存在在文件当中,存放在数据库中。

之所以要存放在数据库当中,是因为这种方式最容易管理,也最安全。

如果存放在文件当中,查找数据则需要一个个文件去查找。如果存在内存当中,当Java程序结束或者系统关闭,数据则会丢失。

基于此,我们将数据存放在数据库当中,是最恰当的方式。

安装数据库

首先,为了使用数据库,首先先进行数据库的安装。我们这里使用MySQL进行演示。

关于MySQL数据库的安装,可以查看之前的文章。

https://blog.csdn.net/ming2r/article/details/100812275

基础SQL语句

接着,我们还要了解一些基础的SQL语句。例如,如何查找数据,新增数据,删除数据,修改数据。

关于这部分内容,大家可以在“菜鸟教程”中进行了解,这里不进行赘述。

https://www.runoob.com/mysql/mysql-tutorial.html

JDBC

接下来,重点介绍我们的JDBC。

定义

JDBC全称为:Java Database Connectivity。即数据库连接,它是一种执行SQL的Java API。

作用

为什么要使用JDBC呢?因为数据库的种类很多,有MySQL,Oracle,DB2等等。我们不可能每一种数据库都写一套Java API,这样会导致开发者,在使用一种数据库,就要学习相应的API。为了进行简化,Java便提供了统一的API,这样开发者只需要学习一种API,就可以管理不同种类的数据库。

如何通过JDBC使用数据库

创建数据库

为了进行演示,我们先创建一个数据库。使用Navicat工具,我们可以非常方便的创建数据库。

在这里插入图片描述

创建数据库表

接着,运行以下MySQL命令,我们创建一个简单的数据表。

可以看出来,这是一张部门表,当中有部门ID、部门名称等等,同时,我们也要为这个表插入几条演示的数据,方便我们进行演示。

DROP TABLE IF EXISTS `sys_dept`;
CREATE TABLE `sys_dept`  (
  `dept_id` int(20) NOT NULL AUTO_INCREMENT,
  `dept_name` varchar(30) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  `phone_no` varchar(11) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  `email` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  `status` varchar(10) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  `create_by` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  `create_time` datetime(0) NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP(0),
  `update_by` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  `update_time` datetime(0) NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP(0),
  `valid_status` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  PRIMARY KEY (`dept_id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 5 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;

插入演示数据

再运行以下MySQL语句,插入演示数据。

INSERT INTO `java-study`.`sys_dept`(`dept_id`, `dept_name`, `phone_no`, `email`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `valid_status`) VALUES (1, '技术部', '123456', '123456@163.com', NULL, NULL, '2019-09-20 10:59:59', NULL, '2019-09-20 10:59:59', '0');
INSERT INTO `java-study`.`sys_dept`(`dept_id`, `dept_name`, `phone_no`, `email`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `valid_status`) VALUES (2, '财务部', '123456', '123456@163.com', NULL, NULL, '2019-09-20 10:59:59', NULL, '2019-09-20 10:59:59', '0');
INSERT INTO `java-study`.`sys_dept`(`dept_id`, `dept_name`, `phone_no`, `email`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `valid_status`) VALUES (3, '人力资源部', '123456', '123456@163.com', NULL, NULL, '2019-09-20 10:59:59', NULL, '2019-09-20 10:59:59', '0');

创建工程

接着,我们创建一个SpringBoot工程,具体的创建教程,可以看以前的文章。

https://blog.csdn.net/ming2r/article/details/100827589

引入依赖

为了在Java中使用JDBC,我们还需要引入属于MySQL的链接依赖。

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <scope>runtime</scope>
</dependency>

为了方便演示,我这里直接使用main方法进行演示。

定义属性

首先,定义数据库地址、用户名以及密码

String url = "jdbc:mysql://localhost:3306/java-study?serverTimezone=GMT";
String userName = "root";
String password = "隐藏";

注册驱动

一般在JDK8以后,我们数据库连接软件都使用:com.mysql.cj.jdbc.Driver。

注册了MySQL驱动后,我们就需要通过地址、账号、密码创建链接。

可以看到,我们这里捕获了两个异常,分别为:ClassNotFoundException、SQLException。

Connection connection = null;
try {
    Class.forName("com.mysql.cj.jdbc.Driver");
    connection = DriverManager.getConnection(url,userName,password);
}catch (ClassNotFoundException e){
    System.out.println("加载数据库驱动出错");
    e.printStackTrace();
} catch (SQLException e) {
    System.out.println("连接数据库出错");
    e.printStackTrace();
}

定义查询SQL

String sql = "select * from sys_dept";

建立连接并执行SQL

PreparedStatement preparedStatement = null;
try {
    preparedStatement = connection.prepareStatement(sql);
} catch (SQLException e) {
    e.printStackTrace();
}
ResultSet resultSet = null;
try {
    resultSet = preparedStatement.executeQuery();
} catch (SQLException e) {
    System.out.println("执行SQL出错");
    e.printStackTrace();
}

执行SQL

ResultSet resultSet = null;
try {
    resultSet = preparedStatement.executeQuery();
} catch (SQLException e) {
    System.out.println("执行SQL出错");
    e.printStackTrace();
}

处理显示结果

try {
    while (resultSet.next()){
        String deptName = resultSet.getString("dept_name");
        System.out.println("查询部门名称为:"+deptName);
    }
} catch (SQLException e) {
    System.out.println("遍历结果集出错");
    e.printStackTrace();
}

运行main方法,可以得到以下的结果。

查询部门名称为:技术部
查询部门名称为:财务部
查询部门名称为:人力资源部

释放资源

在SQL执行完毕并获取到我们需要值之后,就要释放资源,避免一直占用。

try {
    connection.close();
    preparedStatement.close();
    resultSet.close();
} catch (SQLException e) {
    e.printStackTrace();
}

结语

这里简单地介绍了如何通过最原始的方式,去使用JDBC操作数据库。

在实际项目当中,我们通常会使用Hibernate、Mybatis等框架,来保证数据库操作的高效运行,今后我们会一步步介绍的。

但是,如果不理解底层是什么原理,只会使用框架,也是不够的。所以,通过这样的例子,也可以帮助大家理解。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值