写在前面的话:

  1. 参考资料:尚硅谷视频
  2. 本章内容:如何使用Java来操作数据库,实现增加、删除、修改和查询
  3. IDE:eclipse
  4. JDK:Java8
  5. MySQL:mysql  Ver 8.0.26 for Win64 on x86_64
  6. 更新内容:对数据库进行查询

拓展知识:如果不了解JDBC如何连接数据库,可以看此篇文章。

JDBC连接数据库https://blog.csdn.net/qq_56402474/article/details/124390631?spm=1001.2014.3001.5501

拓展知识:如果不知道在eclipse中导入MySQL驱动,可以看此篇文章

下载MySQL驱动,并添加到eclipse工程中https://blog.csdn.net/qq_56402474/article/details/124268415?spm=1001.2014.3001.5501


目录

1.数据库连接

2.释放连接

3.对数据库进行增删改查

3.1 通过 Statement 执行更新操作

3.2 对水果表进行添加数据

3.3 对水果表进行修改数据

3.4 对水果表进行删除数据

3.5 对水果表进行查询操作 (更新)

4.示例

4.1 JDBC进行添加操作

4.2 对数据库进行查询操作

5.浮点型数据保留两位小数

6.随机数字

7.总结(完整代码)


1.数据库连接

    /*** 获取数据库连接* * @return 返回一个数据库连接 Connection* @throws Exception*/private static Connection getConnection() throws Exception {// 准备连接数据库的4个字符串String driver = null;String jdbcUrl = null;String jdbcUser = null;String jdbcPassword = null;// 创建输入流的对象InputStream inputStream = JdbcTools.class.getClassLoader().getResourceAsStream("exer01//jdbc.properties");// 创建Properties的对象Properties properties = new Properties();// 加载properties配置文件到程序中properties.load(inputStream);// 获取文件中的数据driver = properties.getProperty("driver");jdbcUrl = properties.getProperty("jdbcURL");jdbcUser = properties.getProperty("user");jdbcPassword = properties.getProperty("password");// 获取数据库驱动程序Class.forName(driver);// 进行连接Connection conn = DriverManager.getConnection(jdbcUrl, jdbcUser, jdbcPassword);// 返回连接return conn;}

2.释放连接

    /*** 释放连接* * @param connection 获取的连接* @param statement*/private static void release(Connection connection, Statement statement) {// 判断连接是否为空if (statement != null) {// 为了保证连接必须关闭,使用异常处理,防止因为statement关闭出现异常,connection未能够关闭try {statement.close();} catch (Exception e) {e.printStackTrace();}}if (connection != null) {try {connection.close();} catch (Exception e) {e.printStackTrace();}}}

3.对数据库进行增删改查

在数据库中创建一个关于水果的一张表

CREATE TABLE fruits (id int NOT NULL,name varchar(20), price float,number int
) 

在VScode中如下,表示创建成功!此时还没有数据

不了解VScode中操作数据库,可以了解此篇文章

在VScode下连接MySQL并使用https://blog.csdn.net/qq_56402474/article/details/123865933?spm=1001.2014.3001.5501

3.1 通过 Statement 执行更新操作

 /*** 修改数据库 INSERT UPDATE DELETE* * @param sql 传入一个SQL语句*/private static void update(String sql) {// 获取数据库连接Connection conn = null;Statement statement = null;try {// 获取连接conn = getConnection();statement = conn.createStatement();// 执行SQL语句statement.executeUpdate(sql);} catch (Exception e) {e.printStackTrace();} finally {// 释放连接release(conn, statement);}}

3.2 对水果表进行添加数据

在上面private static void update(String sql)下,添加以下代码。

    /*** 插入数据【根据不同的数据库,写不同的插入方法】* @param id            水果的id* @param name          水果的名称* @param price         水果的价格* @param number        水果的库存数量*/public static void insert(int id,String name,float price,int number){String sql = null;//INSERT INTO fruits VALUES(1,'苹果',7.8,50); [仿造格式]//写出SQL语句sql = "INSERT INTO fruits VALUES(" + id +",\'" +name + "\'," + price + "," + number+");";//执行操作update(sql);}

3.3 对水果表进行修改数据

    /*** 修改水果表的ID* @param id 该水果的id号* @param which_fruit 指明要修改的是哪一个水果*/public static void changeId(int id,String which_fruit) {String sql = null;//UPDATE fruits SET id = 101 WHERE name = '苹果';sql = "UPDATE fruits SET id = " + id + " WHERE name = " + "\'" + which_fruit +"\';";update(sql);}/*** 修改水果表的价格* @param price 该水果的价格* @param which_fruit 指明要修改的是哪一个水果*/public static void changePrice(float price,String which_fruit) {String sql = null;//UPDATE fruits SET id = 101 WHERE name = '苹果';sql = "UPDATE fruits SET price = " + price + " WHERE name = " + "\'" + which_fruit +"\';";update(sql);}/*** 修改水果表的库存* @param number 修改该水果的数量* @param which_fruit 指明要修改的是哪一个水果*/public static void changeNumber(int number,String which_fruit) {String sql = null;//UPDATE fruits SET id = 101 WHERE name = '苹果';sql = "UPDATE fruits SET number = " + number + " WHERE name = " + "\'" + which_fruit +"\';";update(sql);}

3.4 对水果表进行删除数据

 /*** 删除水果表中的数据* @param which_fruit 要删除哪一个水果*/public static void delete(String which_fruit) {String sql = null;//DELETE FROM fruits WHERE name = '苹果';sql = "DELETE FROM fruits WHERE name = " + "\'" + which_fruit +"\';";update(sql);}

3.5 对水果表进行查询操作 (更新)

查询需要6步操作

  1. 获取连接
  2. 获取Statement
  3. 获取SQL语句
  4. 执行SQL语句,并返回一个结果集
  5. 将结果集中的数据打印输出到控制台上
  6. 释放连接
 /*** 对水果表进行查询*/public static void query() {Connection connection = null;Statement statement = null;ResultSet resultSet = null;//结果集:用来接受查询到的数据try {//1.获取连接connection = getConnection();//2.获取Statementstatement = connection.createStatement();//3.获取SQL语句String sql = "SELECT * FROM fruits;";//4.执行查询,并将结果(整张数据表)返回给resultSet进行保存resultSet =  statement.executeQuery(sql);//5.在控制台上打印输出while(resultSet.next()) {int id = resultSet.getInt("id");String name = resultSet.getString("name");float price = resultSet.getFloat("price");int number = resultSet.getInt("number");System.out.println(id + "\t" + name + "\t" + String.format("%.2f",price) + "元\t" + number + "个");}} catch (Exception e) {e.printStackTrace();}finally {//6.释放连接release(connection, statement, resultSet);}      }

4.示例

4.1 JDBC进行添加操作

在最后,做一个简单的小例子。在数据库中添加多个水果。


import java.text.DecimalFormat;
import java.util.Random;import org.junit.Test;public class JdbcTest {public static void main(String[] args) {String fruits[] = {"沙果","海棠","野樱莓","枇杷","欧楂","山楂","杏","樱桃","桃","李子","梅子","橘子","砂糖桔","橙子","柠檬","青柠","柚子","金桔","葡萄柚","香橼","佛手","指橙","黄皮果","哈密瓜","香瓜","白兰瓜","刺角瓜","金铃子","草莓","菠萝莓","黑莓","覆盆子","云莓","罗甘莓","白里叶莓","葡萄","提子","醋栗","黑醋栗","红醋栗","蓝莓","蔓越莓","越橘","乌饭果","柿子","黑枣","香蕉","大蕉","南洋红香","无花果","菠萝蜜","构树果实","牛奶果","桑葚","火龙果","黄龙果","红心火龙果","仙人掌果","荔枝","龙眼","红毛丹","榴莲","猴面包果","阳桃","三敛果","椰子","槟榔","海枣","蛇皮果","莲雾","嘉宝果","番石榴","菲油果","苏里南苦樱桃","枸杞","香瓜茄","灯笼果","圣女果","芒果","山竹","柑橘","莲子"};//调用JdbcTools里面的方法直接操控数据库for(int i = 1;i < 21;i++) {JdbcTools.insert(i,fruits[i-1],getPrice(),100);try {Thread.sleep(1000);} catch (InterruptedException e) {e.printStackTrace();}}System.out.println("=====数据库操作完成=====");}public static float getPrice() {float price = 0f;price = new Random().nextInt(10) + new Random().nextFloat() + 1.0f;//浮点型数据保留两位小数DecimalFormat decimalFormat = new DecimalFormat("#.00");//以字符串的形式将保留2位小数的浮点型数据保留下来String s = decimalFormat.format(price);//将其转换回来,还是为float型数据float f =  Float.parseFloat(s);return f;}
}

 测试截图(只取部分)

4.2 对数据库进行查询操作

package exer01;import java.text.DecimalFormat;
import java.util.Random;import org.junit.Test;public class JdbcTest {public static void main(String[] args) {//对数据库进行查询JdbcTools.query();}
}

截图:

5.浮点型数据保留两位小数

浮点型数据保留2位有效数据https://blog.csdn.net/weixin_44985880/article/details/120512282

本文中的案例:

public class Price {public static void main(String[] args) {float price = 0f;//      price = new  Random().nextFloat(10) + 1.0f;price = new Random().nextInt(10) + new Random().nextFloat() + 1.0f;//浮点型数据保留两位小数DecimalFormat decimalFormat = new DecimalFormat("#.00");System.out.println(decimalFormat.format(price));String s = decimalFormat.format(price);System.out.println(s);//将其转换回来,还是为float型数据float f =  Float.parseFloat(s);System.out.println("===========" + f);}
}

截图:

6.随机数字

根据情况,自行调整

price = new Random().nextInt(10) + new Random().nextFloat() + 1.0f;

7.总结(完整代码)

项目结构:

jdbc.properties文件

JdbcTest.java

package exer01;import java.text.DecimalFormat;
import java.util.Random;import org.junit.Test;public class JdbcTest {public static void main(String[] args) {JdbcTools.query();}public void test1() {String fruits[] = { "沙果", "海棠", "野樱莓", "枇杷", "欧楂", "山楂", "杏", "樱桃", "桃", "李子", "梅子", "橘子", "砂糖桔", "橙子", "柠檬","青柠", "柚子", "金桔", "葡萄柚", "香橼", "佛手", "指橙", "黄皮果", "哈密瓜", "香瓜", "白兰瓜", "刺角瓜", "金铃子", "草莓", "菠萝莓", "黑莓","覆盆子", "云莓", "罗甘莓", "白里叶莓", "葡萄", "提子", "醋栗", "黑醋栗", "红醋栗", "蓝莓", "蔓越莓", "越橘", "乌饭果", "柿子", "黑枣", "香蕉","大蕉", "南洋红香", "无花果", "菠萝蜜", "构树果实", "牛奶果", "桑葚", "火龙果", "黄龙果", "红心火龙果", "仙人掌果", "荔枝", "龙眼", "红毛丹", "榴莲","猴面包果", "阳桃", "三敛果", "椰子", "槟榔", "海枣", "蛇皮果", "莲雾", "嘉宝果", "番石榴", "菲油果", "苏里南苦樱桃", "枸杞", "香瓜茄", "灯笼果","圣女果", "芒果", "山竹", "柑橘", "莲子" };// 调用JdbcTools里面的方法直接操控数据库for (int i = 1; i < 21; i++) {JdbcTools.insert(i, fruits[i - 1], getPrice(), 100);try {Thread.sleep(1000);} catch (InterruptedException e) {e.printStackTrace();}}System.out.println("=====数据库操作完成=====");}public static float getPrice() {float price = 0f;price = new Random().nextInt(10) + new Random().nextFloat() + 1.0f;// 浮点型数据保留两位小数DecimalFormat decimalFormat = new DecimalFormat("#.00");// 以字符串的形式将保留2位小数的浮点型数据保留下来String s = decimalFormat.format(price);// 将其转换回来,还是为float型数据float f = Float.parseFloat(s);return f;}
}

JdbcTools.java

package exer01;import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.Properties;import org.junit.Test;/*** JDBC工具类: 1.连接数据库 2.释放连接* * @author star-dream**/
public class JdbcTools {/*** 获取数据库连接* * @return 返回一个数据库连接 Connection* @throws Exception*/private static Connection getConnection() throws Exception {// 准备连接数据库的4个字符串String driver = null;String jdbcUrl = null;String jdbcUser = null;String jdbcPassword = null;// 创建输入流的对象InputStream inputStream = JdbcTools.class.getClassLoader().getResourceAsStream("exer01//jdbc.properties");// 创建Properties的对象Properties properties = new Properties();// 加载properties配置文件到程序中properties.load(inputStream);// 获取文件中的数据driver = properties.getProperty("driver");jdbcUrl = properties.getProperty("jdbcURL");jdbcUser = properties.getProperty("user");jdbcPassword = properties.getProperty("password");// 获取数据库驱动程序Class.forName(driver);// 进行连接Connection conn = DriverManager.getConnection(jdbcUrl, jdbcUser, jdbcPassword);// 返回连接return conn;}/*** 释放连接[不包括查询]* * @param connection 获取的连接* @param statement*/private static void release(Connection connection, Statement statement) {// 判断连接是否为空if (statement != null) {// 为了保证连接必须关闭,使用异常处理,防止因为statement关闭出现异常,connection未能够关闭try {statement.close();} catch (Exception e) {e.printStackTrace();}}if (connection != null) {try {connection.close();} catch (Exception e) {e.printStackTrace();}}}/*** 释放连接【包括查询】* * @param connection 获取的连接* @param statement* @param resultSet     结果集*/private static void release(Connection connection, Statement statement,ResultSet resultSet) {//判断结果集是否为nullif(resultSet != null) {try {resultSet.close();} catch (Exception e) {e.printStackTrace();}}// 判断连接是否为空if (statement != null) {// 为了保证连接必须关闭,使用异常处理,防止因为statement关闭出现异常,connection未能够关闭try {statement.close();} catch (Exception e) {e.printStackTrace();}}if (connection != null) {try {connection.close();} catch (Exception e) {e.printStackTrace();}}}/*** 修改数据库 INSERT UPDATE DELETE* * @param sql 传入一个SQL语句*/private static void update(String sql) {// 获取数据库连接Connection conn = null;Statement statement = null;try {// 获取连接conn = getConnection();statement = conn.createStatement();// 执行SQL语句statement.executeUpdate(sql);} catch (Exception e) {e.printStackTrace();} finally {// 释放连接release(conn, statement);}}/*** 插入数据【根据不同的数据库,写不同的插入方法】* @param id                水果的id* @param name          水果的名称* @param price           水果的价格* @param number      水果的库存数量*/public static void insert(int id,String name,float price,int number){String sql = null;//INSERT INTO fruits VALUES(1,'苹果',7.8,50); [仿造格式]//写出SQL语句sql = "INSERT INTO fruits VALUES(" + id +",\'" +name + "\'," + price + "," + number+");";//执行操作update(sql);}/*** 修改水果表的ID* @param id 该水果的id号* @param which_fruit 指明要修改的是哪一个水果*/public static void changeId(int id,String which_fruit) {String sql = null;//UPDATE fruits SET id = 101 WHERE name = '苹果';sql = "UPDATE fruits SET id = " + id + " WHERE name = " + "\'" + which_fruit +"\';";update(sql);}/*** 修改水果表的价格* @param price 该水果的价格* @param which_fruit 指明要修改的是哪一个水果*/public static void changePrice(float price,String which_fruit) {String sql = null;//UPDATE fruits SET id = 101 WHERE name = '苹果';sql = "UPDATE fruits SET price = " + price + " WHERE name = " + "\'" + which_fruit +"\';";update(sql);}/*** 修改水果表的库存* @param number 修改该水果的数量* @param which_fruit 指明要修改的是哪一个水果*/public static void changeNumber(int number,String which_fruit) {String sql = null;//UPDATE fruits SET id = 101 WHERE name = '苹果';sql = "UPDATE fruits SET number = " + number + " WHERE name = " + "\'" + which_fruit +"\';";update(sql);}/*** 删除水果表中的数据* @param which_fruit 要删除哪一个水果*/public static void delete(String which_fruit) {String sql = null;//DELETE FROM fruits WHERE name = '苹果';sql = "DELETE FROM fruits WHERE name = " + "\'" + which_fruit +"\';";update(sql);}/*** 对水果表进行查询*/public static void query() {Connection connection = null;Statement statement = null;ResultSet resultSet = null;//结果集:用来接受查询到的数据try {//1.获取连接connection = getConnection();//2.获取Statementstatement = connection.createStatement();//3.获取SQL语句String sql = "SELECT * FROM fruits;";//4.执行查询,并将结果(整张数据表)返回给resultSet进行保存resultSet =  statement.executeQuery(sql);//5.在控制台上打印输出while(resultSet.next()) {int id = resultSet.getInt("id");String name = resultSet.getString("name");float price = resultSet.getFloat("price");int number = resultSet.getInt("number");System.out.println(id + "\t" + name + "\t" + String.format("%.2f",price) + "元\t" + number + "个");}} catch (Exception e) {e.printStackTrace();}finally {//6.释放连接release(connection, statement, resultSet);}      }}

贴上gitee仓库地址

下载代码https://gitee.com/star-dream-f/jdbc完

JDBC 实现数据库增删改查相关推荐

  1. jdbc链接mysql按照id查询_使用jdbc连接并操作Oracle数据库(增删改查IDUS)

    使用jdbc连接并操作Oracle数据库(增删改查IDUS) [oracle@zaibei-db ~]$ sqlplus /nolog SQL*Plus: Release 11.2.0.4.0 Pro ...

  2. 用Spring+jdbc 写一个数据库增删改查

    用Spring+Jdbc写一个数据库增删改查 先展示项目结构 ClassBiz.java package com.gxj.biz;import java.util.List;import com.gx ...

  3. Java+MyEclipse+Tomcat (六)详解Servlet和DAO数据库增删改查操作

    此篇文章主要讲述DAO.Java Bean和Servlet实现操作数据库,把链接数据库.数据库操作.前端界面显示分模块化实现.其中包括数据的CRUD增删改查操作,并通过一个常用的JSP网站前端模板界面 ...

  4. Java连接Mysql数据库增删改查实现

    Java连接Mysql数据库增删改查实现 时间比较赶,我这里只实现查询,有时间再添加另外两个 难度 : ⭐⭐⭐(全星5颗星的情况下) 新建一个动态的网站工程, 把jar包全部复制进去,主要要那个mys ...

  5. mfc连接mysql增删改查_java实现mysql数据库增删改查

    1.连接数据库: import java.sql.Connection; import java.sql.DriverManager; public class DBConnection { stat ...

  6. JDBC+MySQL入门增删改查案例

    目录 前言 案例分析 核心思路拆解 案例涉及知识点 第一关 创建数据库和项目 创建数据库 创建项目 第二关 JDBC插入和查询 预备工作 单个插入 批量插入 查询数据 JDBC修改和删除 修改数据 删 ...

  7. MYSQL数据库 增删改查基础语句

    MYSQL数据库 增删改查基础语句 **********************DDL 语句 *********************   ( DDL 是数据定义语言的缩写,简单的说,就是对数据库内 ...

  8. IntelliJ Idea SpringBoot 数据库增删改查实例

    . ____ _ __ _ _/\\ / ___'_ __ _ _(_)_ __ __ _ \\\\( ( )\___ | '_ | '_| | '_ \/ _` | \\\\ \\/ ___)| | ...

  9. Mybatis实现简单的数据库增删改查操作

    简介: MyBatis 是支持定制化 SQL.存储过程以及高级映射的优秀的持久层框架.MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集.MyBatis 可以对配置和原生Ma ...

  10. Java 实现Gbase数据库增删改查功能

    Java 实现Gbase数据库增删改查功能 具体代码如下 主要: 要记得在官网下载驱动包gbase-connector-java-8.3-bin.jar package com.advance.JDB ...

最新文章

  1. Android移动开发之【Android实战项目】DAY5-MPAndroidChart可滑动折线图
  2. C语言经典例83-求0—7所能组成的奇数个数
  3. 我对北京印象之10年前后
  4. Pycharm-列出代码结构
  5. conda虚拟环境中安装ipython
  6. RN子组件获取redux数据
  7. 吉利控股集团申请注册“富吉康”商标
  8. 2018蓝桥杯A组:分数(3种方法 循环累称 快速幂运算 移位运算)
  9. 从技术到求职,强烈推荐一下这9个牛逼的公众号
  10. window下 php debug 的安装
  11. 奥鹏2019计算机应用基础1,奥鹏东师2019年秋季(计算机应用基础)离线考核(仅供参考).docx...
  12. windows whistler系统安装
  13. 如何破解锐捷支持多网卡
  14. 儿童时间管理表,让孩子学会善待时间
  15. 怎么通过服务器性能计算tpmc,如何对服务器性能计算的公式参考(tpmc-tpcc)...pdf
  16. 银河麒麟v10_银河麒麟发布V10系统 其使用的是技德系统Jstack技术
  17. mxgraph 画布
  18. 用ccs创建一个工程文件
  19. python eel 多线程_Python + Eel + Sqlite 实现个人密码管理器
  20. silverlight beet - 动态设置Clip

热门文章

  1. 记录遇到的web前端开发面试题(八股文)
  2. iPhone防止系统自动下载更新
  3. iphone手机 ios系统 无法更新app 跳转到AppStore 显示 打开
  4. matlab红色爱心,Matlab心形函数动态图
  5. 【4G通讯模组相关】 TCPIP连接本地电脑测试 、内网穿透
  6. Thinkpad T410i-2516A21 安装Ubuntu10.0.4记录
  7. STRUTS1框架简介
  8. arcgis for android 调用公网天地图注记重影问题
  9. dbutils mysql_mysql dbutils
  10. python wmic_wmic linux python