用Java调用jdbc接口连接MySQL数据库——实现对数据库的增删改查
使用工具
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);}}
效果展示
运行
界面
查询商店清单
添加商品信息
更新商品信息
删除商品信息
退出系统
如有疑问,请在下方留言
用Java调用jdbc接口连接MySQL数据库——实现对数据库的增删改查相关推荐
- MySQL数据库安装以及SQL基本增删改查
目录 1.介绍下数据库 1.1.DB概念和特点 1.2.常见DB软件 1.3.数据库结构 2.MySQL安装与使用 2.1.安装 2.2.卸载 2.3.MySQL服务启动与关闭 2.4.MySQL登录 ...
- Unity 2021连接外网数据库,建表,增删改查遇到的问题记录
目录 一.连接外网数据库遇到的问题 二.解决问题的方案 动态链接库下载地址: 效果图 一.连接外网数据库遇到的问题 先抛出问题,就是连接内网数据库不会报错,连接外网时和查询时就报这个错: The gi ...
- MySQL基础知识-MySQL概述安装,单表增删改查,函数,约束,多表查询,事物
MySQL基础知识-MySQL概述安装,单表增删改查,函数,约束,多表查询,事物 前言 1.MySQL概述 1.1数据库相关概念 1.2MySQL数据库 1.2.1版本 1.2.2下载 1.2.3安装 ...
- Mysql学习笔记(六)增删改查
原文:Mysql学习笔记(六)增删改查 PS:数据库最基本的操作就是增删改查了... 学习内容: 数据库的增删改查 1.增...其实就是向数据库中插入数据.. 插入语句 insert into tab ...
- SQLite 数据库安装、创建、增删改查(一)
目录 一.学习资料 二.下载软件 1.SQLite 2.SQLiteStudio 3.Navicat 15 for SQLite 4.System.Data.SQLite.dll 三.创建数据库 1. ...
- django2 mysql驱动_Django框架学习(二)Django连接Mysql数据库,实现表的增删改查
创建一个Django项目 方法: 1.使用 django-admin.py 管理工具来创建项目 2.用Pycharm专业版可以直接创建Django 项目 我直接用Pycharm创建的项目,比较简单,也 ...
- java里SQL insert操作的语法_Java含个人总结语法:JDBC,学生表,实体类,集合,增删改查,注入,预处理【诗书画唱】...
create table denglu( uname varchar(30), upwd varchar(30) ) insert into denglu values('诗书','123') ins ...
- MySQL数据库基本操作详解(数据库概述、基本操作、增删改查等)
目录 MySQL数据库概述 MySQL数据库的基本操作 MySQL数据库的表的操作 MySQL数据库的增删查改(CRUD) MySQL数据库概述: 初来乍到,什么是数据库?数据库就是存储数据的仓库,我 ...
- Spring3 MVC+Spring+Spring Jdbc实现的权限管理系统,可以控制到增删改查
前端框架: Jquery1.6+easyui1.3.1+zTree3.4 后端Java框架:Spring3 MVC+Spring+Spring Jdbc三层架构,大量采用注解 Dao层:通过对Spri ...
最新文章
- Ext4文件系统架构分析(一)
- JSON是什么?它能带来什么?
- 1.18 StringBuffer替换特殊字符
- letecode [160] - Intersection of Two Linked Lists
- 1.1 决策树算法原理
- oracle容错,Oracle DML容错处理方法
- MATLAB GUI的CreateFcn如何创建
- HugeGraph 配置参数
- 听说做开发的工资随随便便就上10k?
- 广州市岑村教练场考科目二,惊险通过,经验总结
- 怎么知道自己适不适合学计算机专业,不知道自己到底适不适合学习计算机专业...
- 独家揭秘:用友云的新打算
- 信号与系统研讨(二)归一化正交函数在匹配滤波器中的应用
- linux tomcat 7.0下载 64位,tomcat 7.0下载
- 照片宽高比怎么设置_2019年中级会计报名照片上传完整攻略
- 最近心血来潮,准备更新博客
- 动态规划 -- 钢条切割问题
- 汇编8086复习——基础知识、指令汇总、上机实验踩坑
- python运行excel宏_从python运行excel宏
- win10 设置定时关机
热门文章
- cocos2d-x学习笔记(十)android自动化打包bat脚本
- Spring学习进阶 (三) Spring AOP
- 10g TNS 13541 监听错误 tnsping可以但是conn system/manager@mult1.net 报错
- Visual Studio 2015 速递(4)——高级特性之移动开发
- Linux中的盘符问题
- linux上利用crontab定时备份postgres数据库及文件到windows系统
- [探讨]route print PC与交换机的区别
- 一句话说汽车(超搞笑)
- Hibernate openSession() 和 getCurrentSession的区别 .
- 深入理解Android中View