本篇会加入个人的所谓鱼式疯言
❤️❤️❤️鱼式疯言:❤️❤️❤️此疯言非彼疯言
而是理解过并总结出来通俗易懂的大白话,
小编会尽可能的在每个概念后插入鱼式疯言,帮助大家理解的.
🤭🤭🤭可能说的不是那么严谨.但小编初心是能让更多人能接受我们这个概念 !!!
前言
我们学习数据库的两个重点且 热门的考题——索引和事务
熟悉了索引的 查询优势
和 底层数据结构,并了解了事务的 概念 和 四大基本特性
而本篇文章是另一个小小的开端,试问小伙伴们有没有用 Java代码 来操作 MySQL数据库
的!
而在本篇文章中小编将带着小伙伴掌握用Java代码对数据库进行基础的CRUD
操作 💖 💖 💖 💖
目录
-
JDBC的初识
-
准备工作
-
增加数据
-
修改数据
-
删除数据
-
查询数据
一. JDBC 的初识
1. API 的简介
在谈及 JDBC 前,小伙伴们是否听说过 API
这个 概念
API 的全称: application program interface ;
API
简单来说就是 像我们平常在 Java 或者 数据库 中接触的一些 库,方法, 函数 等等… 这些一系列的 规则和协议 。
鱼式疯言
比如我们Java就有:
Random
Scnner
Map
Set
list …
这些我们都可以称为 Java标准库 的 API
。
JDBC 的简介
像我们
Java
有Java
的自己的API
, 数据库下也有不同的API
,MySQL
有自己的 独立的API ,Oracle 有自己 独立的API 等…
居然不一样,那么我们该怎么通过 Java
的API 来 操控数据库 呢 ? ? ?
其实在
Java
就用了一组API
来兼容对于 所有数据库的操作 ,使这组API
成为了Java
操作数据库 的一组 标准的体系。
而要利用这组
API
来操作,我们需要引入一个 第三方的API , 而这第三方的库就是小伙伴们今天要学习的JDBC
。
了解完 JDBC
,小伙伴们一定很疑惑 JDBC
怎么安装,怎么操作 ? ? ?
下面让来指引着小伙伴来操作吧 💞 💞💞 💞
二. 准备工作
1. 安装JDBC
<1>. 找到JDBC安装的链接
安装JDBC的链接
<2>. 使用经典版找到对应版本下载
如果你MySQL是 5.7 的就找 5开头的
任意版
即可
如果你MySQL是 8.3 的就找 8开头的
任意版
即可
以此类推,
MySQL是几点多
的就找到对应几点对
的版本安装即可,以免出现 版本问题 。
小编这里是5.7的MySQL, 就随机点了一个5点多的JDBC的第三方库给小伙伴演示安装流程
2. 在IDEA中配置环境
这样就算导入我们的 第三方库 ,可以在
IDEA
上正常使用咯, 小伙伴学废了吗 💖 💖 💖 💖
3. 连接 数据库MySQL
// 创建数据源对象
DataSource dataSource = new MysqlDataSource();
// 登入本地IP
((MysqlDataSource)dataSource).setURL("jdbc:mysql://127.0.0.1:3306/java112?characterEncoding=utf8&useSSL=false");
// 登入用户
((MysqlDataSource)dataSource).setUser("root");
// 登入密码
((MysqlDataSource)dataSource).setPassword("q20031229");
// 进行服务器网络连接
Connection connection = dataSource.getConnection();
<1>. 创建数据源对象并登入 本地IP
// 创建数据源对象
DataSource dataSource = new MysqlDataSource();
// 登入本地IP
((MysqlDataSource)dataSource).setURL("jdbc:mysql://127.0.0.1:3306/java112?characterEncoding=utf8&useSSL=false");
这是固定的
连接方式,小伙伴按照这样写即可
鱼式疯言
// 创建数据源对象
DataSource dataSource = new MysqlDataSource();
Database 是一个 接口 , MySQLDatabase 是一个 类
,这里 创建数据源
时,我们用到了 向上转型 。
((MysqlDataSource)dataSource).setURL("jdbc:mysql://127.0.0.1:3306/java112?
characterEncoding=utf8&useSSL=false");
这里 小括号 的就是 向下转型 ,在
Database
这个 接口 中,是不存在这个 setURL 这个方法的。我们就需要向下转型
, 用到MySQLDataBase
这个 方法 。
"jdbc:mysql://127.0.0.1:3306/java112?characterEncoding=utf8&useSSL=false"
注意这里的Java112 指的是小伙伴自己 创建的数据库 ,而小编的数据库就是 Java112 ,所以小伙伴们要根据 自己的数据库 来
指定
哦。
<2>. 用户
// 登入用户
((MysqlDataSource)dataSource).setUser("root");
root用户 为 最高管理员权限 ,我们使用这个 用户权限 即可 。
<3>. 密码
// 登入密码
((MysqlDataSource)dataSource).setPassword("q20031229");
这个密码是自己当初 设置登入MySQL 的 密码
。
鱼式疯言
注意这里的连接的内容都是需要带上
双引号
哦 💫 💫 💫 💫
<4> . 网络连接
// 进行服务器网络连接
Connection connection = dataSource.getConnection();
这个也是固定,小伙伴 照着写 就可以 💞 💞 💞 💞
三. 增加数据
1. Java代码
package JDBCTest;
import com.mysql.jdbc.jdbc2.optional.MysqlDataSource;
import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.Scanner;
public class TestInsert {
public static void main(String[] args) throws SQLException {
// 创建数据源对象
DataSource dataSource = new MysqlDataSource();
/**
* 以下这三种方法是子类特有, 接口并没有
* 需要向下转型
*/
// 找到服务器在哪
((MysqlDataSource)dataSource).setURL("jdbc:mysql://127.0.0.1:3306/java112?
characterEncoding=utf8&useSSL=false");
// 确定用户权限
((MysqlDataSource)dataSource).setUser("root");
// 确定密码
((MysqlDataSource)dataSource).setPassword("q20031229");
/**
* 准备工作做完之后,开始对服务器进行网络连接
*
*/
Connection connection = dataSource.getConnection();
// 输入增加数据
Scanner scanner = new Scanner(System.in);
String name = scanner.nextLine();
int id = scanner.nextInt();
// 创建 SQL语句
String sql = "insert into test values (" + id + " , '" + name + "' )";
// 进行预编译
PreparedStatement statement = connection.prepareStatement(sql);
// 执行SQL语句到服务器上
int num= statement.executeUpdate();
System.out.println(num);
// 释放资源
statement.close();
connection.close();
}
}
实现步骤
<1>. 创建SQL语句并指定输入
// 输入增加数据
Scanner scanner = new Scanner(System.in);
String name = scanner.nextLine();
int id = scanner.nextInt();
// 创建 SQL语句
String sql = "insert into test values (" + id + " , '" + name + "' )";
<2>. 预编译
// 进行预编译
PreparedStatement statement = connection.prepareStatement(sql);
<3>. 执行SQL到服务器上
```sql
// 执行SQL语句到服务器上
int num= statement.executeUpdate();
System.out.println(num);
鱼式疯言
关于我们 修改,删除,插入 操作都是用
executeUpdate
这个方法来执行我们的SQL
语句,并且他会 返回插入 多少行的一个整数 。
<4>. 释放资源
// 释放资源
statement.close();
connection.close();
鱼式疯言
注意细节:
import javax.sql.DataSource;
DataSource
import java.sql.Connection;
Connection
import java.sql.PreparedStatement;
PreparedStatement
import java.sql.SQLException;
SQLException
因为有
同名的类
在 不同包 的情况 , 小伙伴们一定要注意,这些类 所对应的包, 否则就会出错
。
四. 修改数据
1. Java代码
package JDBCTest;
import com.mysql.jdbc.jdbc2.optional.MysqlDataSource;
import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
public class TestUpdate {
public static void main(String[] args) throws SQLException {
// 创建数据源对象
MysqlDataSource MysqldataSource = new MysqlDataSource();
// 进行准备工作
// 确认服务器地址
MysqldataSource.setURL("jdbc:mysql://127.0.0.1:3306/java112?
characterEncoding=utf8&useSSL=false");
// 确认用户
MysqldataSource.setUser("root");
// 确认密码
MysqldataSource.setPassword("q20031229");
// 和服务器进行网络连接
Connection connection = MysqldataSource.getConnection();
// 创建 SQL 语句
String sql = new String("update test set id=10 where name = '张三' ");
// 进行预编译
PreparedStatement preparedStatement = connection.prepareStatement(sql);
// 执行到服务器上
int num = preparedStatement.executeUpdate();
System.out.println(num);
// 关闭资源
preparedStatement.close();
connection.close();
}
}
鱼式疯言
这里和上面大体都是一样一样的,只是我们在 创建SQL语句 这一行
代码不一致
而已
我只需改成我们本身SQL语句
的 修改 ,然后直接放入 预编译的方法 中即可 (无须像上面一样进行输入
)。
五. 删除数据
1. Java 代码
package JDBCTest;
import com.mysql.jdbc.jdbc2.optional.MysqlDataSource;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
public class TestDelete {
public static void main(String[] args) throws SQLException {
// 创建数据源对象
MysqlDataSource mysqlDataSource = new MysqlDataSource();
// 进行准备工作
// 确实服务器地址
mysqlDataSource.setURL("jdbc:mysql://127.0.0.1:3306/java112?characterEncoding=utf8&useSSL=false");
mysqlDataSource.setUser("root");
mysqlDataSource.setPassword("q20031229");
// 进行网络连接
Connection connection = mysqlDataSource.getConnection();
// 创建SQL语句
String sql = "delete from test where id = 19 ";
// 进行预编译
PreparedStatement preparedStatement = connection.prepareStatement(sql);
// 执行到服务器
preparedStatement.executeUpdate();
// 释放资源
preparedStatement.close();
connection.close();
}
}
和上面代码 雷同 ,只是在 创建SQL 时的SQL语句不同,小编在这里就
不赘述
了。 💞 💞 💞 💞
六. 查询数据
1. Java代码
package JDBCTest;
import com.mysql.jdbc.jdbc2.optional.MysqlDataSource;
import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class TestSelect {
public static void main(String[] args) throws SQLException {
// 创建数据源对象
DataSource dataSource = new MysqlDataSource();
// 登入本地IP
((MysqlDataSource)dataSource).setURL("jdbc:mysql://127.0.0.1:3306/java112?characterEncoding=utf8&useSSL=false");
// 登入用户
((MysqlDataSource)dataSource).setUser("root");
// 登入密码
((MysqlDataSource)dataSource).setPassword("q20031229");
// 进行服务器网络连接
Connection connection = dataSource.getConnection();
// 创建 SQL 语句
String sql = "select * from test";
// 预编译
PreparedStatement preparedStatement = connection.prepareStatement(sql);
/**
*
* 执行SQL到服务器上
* 执行后返回一个结果集
* 我们只需要遍历这个结果集
* 就能输出对应表数据
*
*/
ResultSet resultSet = preparedStatement.executeQuery();
// 遍历结果集输出
while (resultSet.next()) {
System.out.println(resultSet.getInt(1) +" "+ resultSet.getString(2));
}
// 释放资源
resultSet.close();
preparedStatement.close();
connection.close();
}
}
2. 实现细节
雷同的小编在这里就不过 多赘述 了,说说主要的 变化的哪些代码吧
<1>. 得到结果集
/**
*
* 执行SQL到服务器上
* 执行后返回一个结果集
* 我们只需要遍历这个结果集
* 就能输出对应表数据
*
*/
ResultSet resultSet = preparedStatement.executeQuery();
当我们需要 查询操作 时, 就需要用到
executeQuery
这个 方法 ,而这个 方法 还有一个特殊的要点
就是会返回一个 结果集 。
这里的结果集就相当于这里的 Set
,把 所有的行 对应的 列数据
都放在这里的 Set
中
<2>. 输出结果集
// 遍历结果集输出
while (resultSet.next()) {
System.out.println(resultSet.getInt(1) +" "+ resultSet.getString(2));
}
我们得到一个 结果集 之后,就可以对其中的
每一行
进行循环遍历进行 输出打印 。
这里的
resultSet.next()
就是用来判断 是否存在下一个元素 ,如果存在就返回true,不存在就返回false
总结
在 本篇文章 中
-
. JDBC的初识: 认识了API 以及JDBC的第三方库的概念
-
. 准备工作: 熟悉了如何安装JDBC的第三方库和版本问题并且配置好相对应的环境如:
创建数据源,本地IP连接,用户权限,密码,网络连接。 -
. 增加数据: 通过Java代码来增加并详细每一步的操作解释了每一步所对应的作用和原理如:创建SQL语句, 预编译SQL, 执行SQL,释放资源。
-
. 修改数据: 通过Java代码来增加并详细每一步的操作解释了每一步所对应的作用和原理如:创建SQL语句, 预编译SQL, 执行SQL,释放资源。
-
. 删除数据: 通过Java代码来增加并详细每一步的操作解释了每一步所对应的作用和原理如:创建SQL语句, 预编译SQL, 执行SQL,释放资源。
-
. 查询数据: 通过Java代码来查询并引入结果集的概念来接收数据库的数据并遍历打印,如:创建SQL语句,预编译SQL, 执行SQL并放入结果集 ,遍历结果集,释放资源。
如果觉得小编写的还不错的咱可支持 三连 下 (定有回访哦) , 不妥当的咱请评论区 指正
希望我的文章能给各位宝子们带来哪怕一点点的收获就是 小编创作 的最大 动力 💖 💖 💖