数据库第一课 - 在Java中如何通过JDBC使用MySQL数据库
文章目录
- 数据库第一课 - 在Java中如何通过JDBC使用MySQL数据库
- 为什么要使用数据库
- 安装数据库
- 基础SQL语句
- JDBC
- 定义
- 作用
- 如何通过JDBC使用数据库
- 创建数据库
- 创建数据库表
- 插入演示数据
- 创建工程
- 引入依赖
- 定义属性
- 注册驱动
- 定义查询SQL
- 建立连接并执行SQL
- 执行SQL
- 处理显示结果
- 释放资源
- 结语
为什么要使用数据库
数据的存放方式有很多种,例如存放在Java的内存当中,存在在文件当中,存放在数据库中。
之所以要存放在数据库当中,是因为这种方式最容易管理,也最安全。
如果存放在文件当中,查找数据则需要一个个文件去查找。如果存在内存当中,当Java程序结束或者系统关闭,数据则会丢失。
基于此,我们将数据存放在数据库当中,是最恰当的方式。
安装数据库
首先,为了使用数据库,首先先进行数据库的安装。我们这里使用MySQL进行演示。
关于MySQL数据库的安装,可以查看之前的文章。
https://blog.csdn/ming2r/article/details/100812275
基础SQL语句
接着,我们还要了解一些基础的SQL语句。例如,如何查找数据,新增数据,删除数据,修改数据。
关于这部分内容,大家可以在“菜鸟教程”中进行了解,这里不进行赘述。
https://www.runoob/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', 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', 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', NULL, NULL, '2019-09-20 10:59:59', NULL, '2019-09-20 10:59:59', '0');
创建工程
接着,我们创建一个SpringBoot工程,具体的创建教程,可以看以前的文章。
https://blog.csdn/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等框架,来保证数据库操作的高效运行,今后我们会一步步介绍的。
但是,如果不理解底层是什么原理,只会使用框架,也是不够的。所以,通过这样的例子,也可以帮助大家理解。
更多推荐
数据库第一课 - 在Java中如何通过JDBC使用MySQL数据库
发布评论