文章目录

  • 1. JDBC概述
  • 2. 前期准备
  • 3. CRUD的实现
    • 3.2. mysql的CRUD语句
      • 3.2.1. 查询
      • 3.2.2. 插入:
      • 3.2.3. 更新:
      • 3.2.4. 删除:
    • 3.3. 操作简述
    • 3.4. 实现代码
  • 参考资料

1. JDBC概述

JDBC(Java DataBase Connectivity, java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。(注意:JDBC是人为制定的一种规范,而不是一种实现)

如下图所示,有了JDBC我们就可以通过JDBC去加载不同数据库厂商的驱动,实现对不同数据库的操作,而不用针对不同数据库再编写相应的程序,使程序拥有良好的可移植性。

2. 前期准备

数据库:mysql 5.6
IDE:Eclipse IDE for Enterprise Java Developers

因为需要连接mysql数据库,这里要用到mysql-connector-java-5.1.28-bin.jar包,Maven项目可以直接添加依赖。由于是学习的缘故,这里用到的包相对会比较旧。

<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
<dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.28</version>
</dependency>

3. CRUD的实现

这些功能实现其实很简单,主要包含以下步骤:

  1. 注册数据库驱动
  2. 获取数据库的连接
  3. 获取传输对象
  4. 用传输对象传输sql语句到数据库中执行,获取结果集对象
  5. 遍历结果集获取需要的数据(只有查询才会返回结果集)
  6. 关闭资源

由上面的步骤可以看出其实大部分操作都是套路型的(花里胡哨),核心操作还是我们对传输sql语句到数据库中执行,本质上我们本知道知道相应操作的sql语句就可以完成。

3.2. mysql的CRUD语句

虽然知道sql语句是核心,但是如果平时不常用的话,很容易就会忘记了。现在先来复习一下mysql简单的增删查改操作。

3.2.1. 查询

SELECT column_name,column_name
FROM table_name
WHERE column_name operator value;

3.2.2. 插入:

插入操作主要有以下两种写法:

第一种形式无需指定要插入数据的列名,只需提供被插入的值即可:

INSERT INTO table_name
VALUES (value1,value2,value3,...);

第二种形式需要指定列名及被插入的值:

INSERT INTO table_name (column1,column2,column3,...)
VALUES (value1,value2,value3,...);

3.2.3. 更新:

# 更新表中已经存在的元素
UPDATE table_name
SET column1=value1,column2=value2,...
WHERE some_column=some_value;

3.2.4. 删除:

# 根据条件删除表中已经存在的元素
DELETE FROM table_name
WHERE some_column=some_value;

3.3. 操作简述

我们第一步要获取到数据库的连接:

  • 首先需要注册数据库的驱动,这里用到Class.forName()方法,参数是数据库驱动的类型,如果是mysql数据库的话传入的是"com.mysql.jdbc.Driver"。
  • 接着就是连接到数据库了,我们需要传入数据库的地址,用户名和密码。这里需要简单解释一下数据库地址的写法:
    • 一般格式:jdbc:数据库类型://ip:port/数据库名称。比如我们要连接本地一个叫做mydb1的数据库,地址就写为:jdbc:mysql://localhost:3306/mydb1
    • 当ip地址和端口号为本地地址和数据库默认端口号时,可以省略不写。例如上面的数据库地址可以简写为:jdbc:mysql://localhost:3306/mydb1
//1.注册数据库驱动
Class.forName(DriverType);
//2.获取数据库的连接
Connection conn = DriverManager.getConnection(url, user, password);

成功连接之后就可以获取传输器Statement对象,利用该对象传输sql语句对数据进行操作了。

  • Statement接口主要用于在已经建立连接的基础上向数据库发送SQL语句。
  • ResultSet接口类似于一个临时表,用来暂时存放数据库查询操作获得的结果集。
//3.获取传输器对象
Statement state = conn.createStatement();
//4.传输sql语句到数据库中执行,获取结果集对象
ResultSet res = res = state.executeQuery(sql);

3.4. 实现代码

由于操作都比较重复,这里只演示查询的操作。如果进行其他操作,只要更改相应的sql语句。下面的代码封装得也不是很好,可以考虑以下优化:

  • 由于连接和关闭资源操作都比较重复,我们可以把它们封装成一个静态的JDBCUtils。
  • 我们可以把像驱动的类型、数据库地址、用户名和密码这些信息都写入配置文件,连接的时候再从配置文件中读取。
public class JdbcCRUD {private static Connection conn = null;private static Statement state = null;private static ResultSet res = null;private static void find() {try {//1.注册数据库驱动Class.forName("com.mysql.jdbc.Driver");//2.获取数据库的连接conn = DriverManager.getConnection("jdbc:mysql:///mydb1", "root", "123456");//3.获取传输器对象state = conn.createStatement();//4.传输sql语句到数据库中执行,获取结果集对象res = state.executeQuery(" select * from user ");//5.遍历结果集获取需要的数据while (res.next()) {int id = res.getInt("id");String name = res.getString("username");String password = res.getString("password");System.out.println(id + "," + name + "," + password);}} catch (Exception e) {e.printStackTrace();} finally {//6.关闭资源if (res != null) {try {res.close();} catch (Exception e) {e.printStackTrace();} finally {res = null;}}if (state != null) {try {state.close();} catch (Exception e) {e.printStackTrace();} finally {state = null;}}if (conn != null) {try {conn.close();} catch (Exception e) {e.printStackTrace();} finally {conn = null;}}}     }
}

参考资料

  1. https://www.cnblogs.com/xujingyang/p/6477210.html
  2. https://www.runoob.com/sql/sql-tutorial.html

Java学习之JDBC实现简单的CRUD(mysql数据库)相关推荐

  1. Java入门基础:Java JDBC封装简单的访问MySQL数据库类(BaseDao)

    1.JDBC封装访问数据库的基类,目的是重用数据库访问代码 封装以下方法: MySQL数据库的连接 数据库关闭 开启数据库事务 提交数据库事务 事务回滚 注意没有封装存储过程的调用 /** * < ...

  2. Java版DBHelper【简单】(MySQL数据库)

    http://www.cnblogs.com/xia520pi/archive/2012/05/22/2513920.html Java版DBHelper[简单](MySQL数据库) 1.测试数据库 ...

  3. 基于JAVA计算机在线学习管理系统-计算机毕业设计源码+系统+mysql数据库+lw文档+部署

    基于JAVA计算机在线学习管理系统-计算机毕业设计源码+系统+mysql数据库+lw文档+部署 基于JAVA计算机在线学习管理系统-计算机毕业设计源码+系统+mysql数据库+lw文档+部署 本源码技 ...

  4. 基于JAVA英语课程学习网站计算机毕业设计源码+系统+mysql数据库+lw文档+部署

    基于JAVA英语课程学习网站计算机毕业设计源码+系统+mysql数据库+lw文档+部署 基于JAVA英语课程学习网站计算机毕业设计源码+系统+mysql数据库+lw文档+部署 本源码技术栈: 项目架构 ...

  5. 计算机毕业设计Java网上书店管理系统(源码+系统+mysql数据库+Lw文档)

    计算机毕业设计Java网上书店管理系统(源码+系统+mysql数据库+Lw文档) 计算机毕业设计Java网上书店管理系统(源码+系统+mysql数据库+Lw文档) 本源码技术栈: 项目架构:B/S架构 ...

  6. 计算机毕业设计Java医院预约挂号系统(系统+源码+mysql数据库+Lw文档)

    计算机毕业设计Java医院预约挂号系统(系统+源码+mysql数据库+Lw文档) 计算机毕业设计Java医院预约挂号系统(系统+源码+mysql数据库+Lw文档) 本源码技术栈: 项目架构:B/S架构 ...

  7. java计算机毕业设计中医药科普网站源码+mysql数据库+系统+部署+lw文档

    java计算机毕业设计中医药科普网站源码+mysql数据库+系统+部署+lw文档 java计算机毕业设计中医药科普网站源码+mysql数据库+系统+部署+lw文档 本源码技术栈: 项目架构:B/S架构 ...

  8. 计算机毕业设计Java消防站信息管理系统(源码+系统+mysql数据库+Lw文档)

    计算机毕业设计Java消防站信息管理系统(源码+系统+mysql数据库+Lw文档) 计算机毕业设计Java消防站信息管理系统(源码+系统+mysql数据库+Lw文档) 本源码技术栈: 项目架构:B/S ...

  9. java计算机毕业设计教师继续教育源码+mysql数据库+系统+lw文档+部署

    java计算机毕业设计教师继续教育源码+mysql数据库+系统+lw文档+部署 java计算机毕业设计教师继续教育源码+mysql数据库+系统+lw文档+部署 本源码技术栈: 项目架构:B/S架构 开 ...

最新文章

  1. PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to fi
  2. Java设计模式12:装饰器模式
  3. 企业级账号 版本更新总结
  4. python + selenium 练习篇 - 定位元素的方法
  5. drupal_Drupal社区在DevOps采纳中的地位
  6. win7计算机双击空白,win7系统控制面板“打开或关闭Windows 功能”空白没有任何选项的解决方法...
  7. 简明Linux命令行笔记:tee
  8. matlab 输入时间,求助:在MATLAB里如何输入时间序列中的时间
  9. Linux-unit-10-11-日志,IP
  10. 微信自动回复 html 点击文字,常见微信自动回复经典语录
  11. 易烊千玺成为罗莱家纺品牌代言人
  12. Python学习笔记——eofs.standard的使用
  13. 【异步电路碎碎念1】 —— 到底什么是异步电路
  14. 设置img标签的默认图片
  15. 移植TFT-LCD到HAL库
  16. 华纳云:盘点那些年操作系统的成长史
  17. JS数据类型-mdn
  18. 三叶草考试模拟系统服务器,三叶草学考模拟系统
  19. 阿里RocketMQ创始人首次分享出这份RocketMQ技术神级架构手册
  20. Atlassian Crowd实现JIRA、Confluence、Bamboo和Fisheye and Crucible单点登录

热门文章

  1. [ARM异常]-linux中(aarch/aarch64)异常向量表介绍
  2. 一图弄懂ARM中都有什么
  3. 2021-07-15
  4. 【攻防世界003】re-for-50-plz-50
  5. 160个Crackme031之一元二次方程
  6. python爬虫,爬取糗事百科并保存到文件中
  7. 6、处理大数据对象(CLOB 数据小说+BLOG 数据图片,电影,音乐)
  8. 春季每日一题2022 Week 1 【完结】
  9. Spring boot添加员工页面跳转
  10. jQuery停止动画