使用工具

IDEA2018.2 MySQL5.6 JDK1.8

mysql-connector-java-5.0.8-bin.jar

源码下载地址

码云链接:https://gitee.com/vvcat/fruit_store
mysql-connector-java-5.0.8-bin.jar 微云下载链接:https://share.weiyun.com/5jp0fIr

环境搭建




添加mysql-connector-java-5.0.8-bin.jar



将 mysql-connector-java-5.0.8-bin.jar 文件添加到resources目录下

此时并没有将 mysql-connector-java-5.0.8-bin.jar 加载到我们的程序中,需要进行以下操作

选择OK

此时这个jar包导入了我们的项目中,可以查看jar包中的代码


以下是代码结构和jar包存放的位置

IDEA连接数据库

IDEA分为
商业版本:Ultimate Edition;
免费版本:Community Edition;





如果出现Failed 说明 数据库测试链接失败,请检查Database,User,Password等信息是否输入正确

出现Successful 说明 数据库 测试连接成功,我们可以使用和调用数据库的数据了。

代码示例

CREATE DATABASE fruit_store;USE fruit_store;CREATE TABLE fruits(id INT(11) NOT NULL AUTO_INCREMENT,name VARCHAR(50) NULL,price DOUBLE NULL,unit VARCHAR(50) NULL,expiredDate DATE NULL,PRIMARY KEY (id)
) ENGINE=INNODB AUTO_INCREMENT=1 CHARSET=utf8;INSERT INTO fruits (id, name, price, unit, expiredDate)
VALUES(1, '香蕉', '10.5', '斤', '2019-9-15'),(2, '苹果', '1.5', '斤', '2019-9-16');

Main.java

package com.gitee.vvcat;import java.text.ParseException;
import java.util.Scanner;
import com.gitee.vvcat.ui.AdminController;public class Main {public static void main(String[] args) throws ParseException {AdminController adminController = new AdminController();while (true) {int choice = adminController.menu();switch (choice) {case 1:adminController.queryAll();break;case 2:adminController.addFruit();break;case 3:adminController.updateFruit();break;case 4:adminController.deleteFruit();break;case 5:System.out.println("欢迎下次使用!");return;default:System.out.println("输入错误,请重新输入!");}}}}

AdminController.java

package com.gitee.vvcat.ui;/*** @Author ꧁ʚVVcatɞ꧂* @Date 2019/9/11 11:59* @Version 1.0**/import com.gitee.vvcat.model.Fruit;
import com.gitee.vvcat.services.AdminService;import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.Scanner;public class AdminController {AdminService adminService= new AdminService();public   int menu() {Scanner scanner = new Scanner(System.in);System.out.println("\n\t\t商品管理系统");System.out.println("\t\t\t1:查询商品清单");System.out.println("\t\t\t2:添加新信息");System.out.println("\t\t\t3:更新信息");System.out.println("\t\t\t4:删除信息");System.out.println("\t\t\t5:退出系统");System.out.print("\t\t请选择你的操作(1-5):");return scanner.nextInt();}public void queryAll() {ArrayList<Fruit> fruits = adminService.queryFruits();System.out.println("商品的所有清单");System.out.println("编号| 名称| 价格 | 单位 | 过期日期");for(Fruit item:fruits){System.out.println(item);}}public void addFruit() throws ParseException {SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");Scanner scanner = new Scanner(System.in);System.out.println("添加信息:");System.out.print("请输入编号:");int id = scanner.nextInt();System.out.print("请输入名称:");String name = scanner.next();System.out.print("请输入价格:");double price = scanner.nextDouble();System.out.print("请输入单位:");String unit = scanner.next();System.out.print("请输入过期日期:");Date expiredDate=sdf.parse(scanner.next());if (adminService.addFruit(id,name,price, unit,expiredDate)){System.out.println("\t信息添加成功!");}else {System.out.println("\t信息添加失败!");}}public void updateFruit() throws ParseException {SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");Scanner scanner = new Scanner(System.in);System.out.println("更新某个信息:");System.out.print("请输入要更改的编号:");int id = scanner.nextInt();System.out.print("请输入新的名称:");String name = scanner.next();System.out.print("请输入新的价格:");double price = scanner.nextDouble();System.out.print("请输入新的单位:");String unit = scanner.next();System.out.print("请输入新的过期日期:");Date expiredDate=sdf.parse(scanner.next());if (adminService.updateFruit(id,name,price, unit,expiredDate)){System.out.println("\t信息更新成功!");}else {System.out.println("\t信息更新失败!");}}public void deleteFruit() {Scanner scanner = new Scanner(System.in);System.out.println("删除某个信息:");System.out.print("请输入要删除的编号:");int id= scanner.nextInt();if(adminService.deleteFruit(id)){System.out.println("删除成功!");}else {System.out.println("删除失败!");}}
}

AdminService.java

package com.gitee.vvcat.services;/*** @Author ꧁ʚVVcatɞ꧂* @Date 2019/9/11 11:58* @Version 1.0**/import com.gitee.vvcat.model.*;
import com.gitee.vvcat.data.FruitRepository;import java.util.ArrayList;
import java.util.Date;public class AdminService {private Repository<Fruit> repository=new FruitRepository();public ArrayList<Fruit> queryFruits(){return repository.all();}public boolean addFruit(int id,String name ,double price,String unit,Date expiredDate){Fruit item = repository.getById(id);if (item==null){Fruit fruit = new Fruit(id, name, price, unit, expiredDate);repository.insert(fruit);return true;}return false;}public boolean updateFruit(int id,String name ,double price,String unit,Date expiredDate){Fruit item = repository.getById(id);if (item!=null){item.setName(name);item.setPrice(price);item.setUnit(unit);item.setExpiredDate(expiredDate);repository.update(item);return true;}return false;}public boolean deleteFruit(int id){Fruit item = repository.getById(id);if (item!=null){repository.delete(id);return true;}return false;}
}

Repository.java

package com.gitee.vvcat.model;/*** @Author ꧁ʚVVcatɞ꧂* @Date 2019/9/11 11:57* @Version 1.0**/
import java.util.ArrayList;public interface Repository<T> {ArrayList<T> all();T getById(int id);void insert(T entity);void update(T entity);void delete(int id);}

Fruit.java

package com.gitee.vvcat.model;/*** @Author ꧁ʚVVcatɞ꧂* @Date 2019/9/11 11:57* @Version 1.0**/
import java.text.SimpleDateFormat;
import java.util.Date;public class Fruit {private int id;private String name;private double price;private String unit;private Date expiredDate;public Fruit() {}public Fruit(int id, String name, double price, String unit, Date expiration) {this.id = id;this.name = name;this.price = price;this.unit = unit;this.expiredDate = expiration;}public int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public double getPrice() {return price;}public void setPrice(double price) {this.price = price;}public String getUnit() {return unit;}public void setUnit(String unit) {this.unit = unit;}public Date getExpiredDate() {return expiredDate;}public void setExpiredDate(Date expiredDate) {this.expiredDate = expiredDate;}@Overridepublic String toString() {SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");return "\t"+getId()+"\t"+getName()+"\t"+getPrice()+"\t"+getUnit()+"\t"+simpleDateFormat.format(getExpiredDate());}public boolean isExpired(){if (new Date().before(expiredDate)){return false;}return true;}
}

FruitRepository.java

package com.gitee.vvcat.data;/*** @Author ꧁ʚVVcatɞ꧂* @Date 2019/9/11 11:58* @Version 1.0**/import com.gitee.vvcat.model.Fruit;
import com.gitee.vvcat.model.Repository;
import com.gitee.vvcat.util.DbUtility;import java.sql.*;
import java.util.ArrayList;
import java.util.Date;public class FruitRepository implements Repository<Fruit> {@Overridepublic ArrayList<Fruit> all() {Connection conn=null;Statement smt=null;ResultSet rs=null;String sql = "select * from fruits";ArrayList<Fruit> result = new ArrayList<Fruit>();try {conn = DbUtility.getConnection();smt=conn.createStatement();rs=smt.executeQuery(sql);while(rs.next()){Fruit fruit = new Fruit();fruit.setId(rs.getInt("id"));fruit.setName(rs.getString("name"));fruit.setPrice(rs.getDouble("price"));fruit.setUnit(rs.getString("unit"));fruit.setExpiredDate(new Date(rs.getDate("expireddate").getTime()));result.add(fruit);}} catch (ClassNotFoundException e) {e.printStackTrace();} catch (SQLException e) {e.printStackTrace();}finally {DbUtility.release(smt,conn,rs);}return result;}@Overridepublic Fruit getById(int id) {Connection conn=null;PreparedStatement smt=null;ResultSet rs=null;String sql = "select * from fruits where id=?";try {conn = DbUtility.getConnection();smt=conn.prepareStatement(sql);smt.setInt(1,id);rs=smt.executeQuery();if (rs.next()){Fruit fruit = new Fruit();fruit.setId(rs.getInt("id"));fruit.setName(rs.getString("name"));fruit.setPrice(rs.getDouble("price"));fruit.setUnit(rs.getString("unit"));fruit.setExpiredDate(new Date(rs.getDate("expireddate").getTime()));return fruit;}return null;} catch (ClassNotFoundException e) {e.printStackTrace();} catch (SQLException e) {e.printStackTrace();}finally {DbUtility.release(smt,conn,rs);}return null;}@Overridepublic void insert(Fruit entity) {Connection conn=null;PreparedStatement smt=null;String sql = "insert into fruits(id,name,price,unit,expireddate) values(?,?,?,?,?)";try {conn=DbUtility.getConnection();smt=conn.prepareStatement(sql);smt.setInt(1,entity.getId());smt.setString(2,entity.getName());smt.setDouble(3,entity.getPrice());smt.setString(4,entity.getUnit());smt.setDate(5,new java.sql.Date(entity.getExpiredDate().getTime()));smt.executeUpdate();} catch (SQLException e) {e.printStackTrace();} catch (ClassNotFoundException e) {e.printStackTrace();}finally {DbUtility.release(smt,conn);}}@Overridepublic void update(Fruit entity) {Connection conn=null;PreparedStatement smt=null;String sql = "UPDATE fruits SET name=? , price=? ,unit=?,expireddate=? WHERE id=?";try {conn=DbUtility.getConnection();smt=conn.prepareStatement(sql);smt.setString(1,entity.getName());smt.setDouble(2,entity.getPrice());smt.setString(3,entity.getUnit());smt.setDate(4,new java.sql.Date(entity.getExpiredDate().getTime()));smt.setInt(5,entity.getId());smt.executeUpdate();} catch (SQLException e) {e.printStackTrace();} catch (ClassNotFoundException e) {e.printStackTrace();}finally {DbUtility.release(smt,conn);}}@Overridepublic void delete(int id) {Connection conn=null;PreparedStatement smt=null;String sql = "DELETE FROM fruits WHERE id=?";try {conn=DbUtility.getConnection();smt=conn.prepareStatement(sql);smt.setInt(1,id);smt.executeUpdate();} catch (SQLException e) {e.printStackTrace();} catch (ClassNotFoundException e) {e.printStackTrace();}finally {DbUtility.release(smt,conn);}}
}
DbUtility.java
package com.gitee.vvcat.util;/*** @Author ꧁ʚVVcatɞ꧂* @Date 2019/9/11 11:59* @Version 1.0**/import java.sql.*;public class DbUtility {public static Connection getConnection() throws ClassNotFoundException, SQLException {Class.forName("com.mysql.jdbc.Driver");String url = "jdbc:mysql://localhost:3306/fruit_store";String user = "root";String password = "123456";Connection conn = DriverManager.getConnection(url, user, password);return conn;}public static void release(Statement smt,Connection conn){release(smt);release(conn);}private static<T extends AutoCloseable> void release(T smt) {if (smt!=null){try {smt.close();} catch (SQLException e) {e.printStackTrace();} catch (Exception e) {e.printStackTrace();}smt=null;}}public static void release(Statement smt,Connection conn,ResultSet rs){release(smt);release(conn);release(rs);}}

效果展示

  1. 运行

  2. 界面

  3. 查询商店清单

  4. 添加商品信息

  5. 更新商品信息

  6. 删除商品信息

  7. 退出系统

如有疑问,请在下方留言

用Java调用jdbc接口连接MySQL数据库——实现对数据库的增删改查相关推荐

  1. MySQL数据库安装以及SQL基本增删改查

    目录 1.介绍下数据库 1.1.DB概念和特点 1.2.常见DB软件 1.3.数据库结构 2.MySQL安装与使用 2.1.安装 2.2.卸载 2.3.MySQL服务启动与关闭 2.4.MySQL登录 ...

  2. Unity 2021连接外网数据库,建表,增删改查遇到的问题记录

    目录 一.连接外网数据库遇到的问题 二.解决问题的方案 动态链接库下载地址: 效果图 一.连接外网数据库遇到的问题 先抛出问题,就是连接内网数据库不会报错,连接外网时和查询时就报这个错: The gi ...

  3. MySQL基础知识-MySQL概述安装,单表增删改查,函数,约束,多表查询,事物

    MySQL基础知识-MySQL概述安装,单表增删改查,函数,约束,多表查询,事物 前言 1.MySQL概述 1.1数据库相关概念 1.2MySQL数据库 1.2.1版本 1.2.2下载 1.2.3安装 ...

  4. Mysql学习笔记(六)增删改查

    原文:Mysql学习笔记(六)增删改查 PS:数据库最基本的操作就是增删改查了... 学习内容: 数据库的增删改查 1.增...其实就是向数据库中插入数据.. 插入语句 insert into tab ...

  5. SQLite 数据库安装、创建、增删改查(一)

    目录 一.学习资料 二.下载软件 1.SQLite 2.SQLiteStudio 3.Navicat 15 for SQLite 4.System.Data.SQLite.dll 三.创建数据库 1. ...

  6. django2 mysql驱动_Django框架学习(二)Django连接Mysql数据库,实现表的增删改查

    创建一个Django项目 方法: 1.使用 django-admin.py 管理工具来创建项目 2.用Pycharm专业版可以直接创建Django 项目 我直接用Pycharm创建的项目,比较简单,也 ...

  7. java里SQL insert操作的语法_Java含个人总结语法:JDBC,学生表,实体类,集合,增删改查,注入,预处理【诗书画唱】...

    create table denglu( uname varchar(30), upwd varchar(30) ) insert into denglu values('诗书','123') ins ...

  8. MySQL数据库基本操作详解(数据库概述、基本操作、增删改查等)

    目录 MySQL数据库概述 MySQL数据库的基本操作 MySQL数据库的表的操作 MySQL数据库的增删查改(CRUD) MySQL数据库概述: 初来乍到,什么是数据库?数据库就是存储数据的仓库,我 ...

  9. Spring3 MVC+Spring+Spring Jdbc实现的权限管理系统,可以控制到增删改查

    前端框架: Jquery1.6+easyui1.3.1+zTree3.4 后端Java框架:Spring3 MVC+Spring+Spring Jdbc三层架构,大量采用注解 Dao层:通过对Spri ...

最新文章

  1. Ext4文件系统架构分析(一)
  2. JSON是什么?它能带来什么?
  3. 1.18 StringBuffer替换特殊字符
  4. letecode [160] - Intersection of Two Linked Lists
  5. 1.1 决策树算法原理
  6. oracle容错,Oracle DML容错处理方法
  7. MATLAB GUI的CreateFcn如何创建
  8. HugeGraph 配置参数
  9. 听说做开发的工资随随便便就上10k?
  10. 广州市岑村教练场考科目二,惊险通过,经验总结
  11. 怎么知道自己适不适合学计算机专业,不知道自己到底适不适合学习计算机专业...
  12. 独家揭秘:用友云的新打算
  13. 信号与系统研讨(二)归一化正交函数在匹配滤波器中的应用
  14. linux tomcat 7.0下载 64位,tomcat 7.0下载
  15. 照片宽高比怎么设置_2019年中级会计报名照片上传完整攻略
  16. 最近心血来潮,准备更新博客
  17. 动态规划 -- 钢条切割问题
  18. 汇编8086复习——基础知识、指令汇总、上机实验踩坑
  19. python运行excel宏_从python运行excel宏
  20. win10 设置定时关机

热门文章

  1. cocos2d-x学习笔记(十)android自动化打包bat脚本
  2. Spring学习进阶 (三) Spring AOP
  3. 10g TNS 13541 监听错误 tnsping可以但是conn system/manager@mult1.net 报错
  4. Visual Studio 2015 速递(4)——高级特性之移动开发
  5. Linux中的盘符问题
  6. linux上利用crontab定时备份postgres数据库及文件到windows系统
  7. [探讨]route print PC与交换机的区别
  8. 一句话说汽车(超搞笑)
  9. Hibernate openSession() 和 getCurrentSession的区别 .
  10. 深入理解Android中View