利用JDBC通过MySQL进行数据存储查询修改的简易快递管理系统

前言

作者是一个才学java的新手,水平比较低,见谅
而且这个小练习也是基于之前写过的一个练习修改而来(将数据存储获取全部改为利用MySQL)
本文的代码想要正常运行需要安装MySQL数据库并配置好环境,
而且在项目中需要添加JDBC驱动包,如下图:
在这里插入图片描述

以下是源代码

1.连接数据库

package DataBaseOperation;

/*
 * 用于获取数据库连接
 */

import java.sql.*;

public class JDBCutil 
{
   
   
	private String Driver;//驱动
	private String URL;//服务器地址,数据库名
	private String USERNAME;//用户名
	private String PASSWORD;//用户密码
	private Connection connect;//数据库连接对象
	
	public JDBCutil()
	{
   
   
		this.Driver = "com.mysql.jdbc.Driver";
		
		//?useSSL=false加上这段,是因为如果不加会警告不建议连接没有带服务器身份验证的SSL(虽然无所谓,简单练习不需要纠结证书
		this.URL = "jdbc:mysql://localhost:3306/express?useSSL=false";
		this.USERNAME = "root";
		this.PASSWORD = "这里输入你自己设置的密码";
	}
	
	public Connection getConnection()
	{
   
   
		try
		{
   
   
			Class.forName(this.Driver);//加载MySQL JDBC驱动程序
			System.out.println("Success loading MySQL Driver");
		}
		catch(Exception e)
		{
   
   
			System.out.println("Error loading MySQL Driver");
			e.printStackTrace();
		}
		
		try
		{
   
   
			this.connect = DriverManager.getConnection(this.URL, this.USERNAME, this.PASSWORD);//建立连接
			System.out.println("Success connect MySQL server");
		}
		catch(Exception e)
		{
   
   
			System.out.println("Error connect MySQL server");
			e.printStackTrace();
		}
		
		return this.connect;
	}
	
	/*public static void main(String[] args) 
	{

	}*/

}

2.对数据进行操作

package DataBaseOperation;

/*
 * 利用SQL语句对数据库进行操作
 * 读取,插入,删除,更新
 */
import java.sql.*;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import javax.swing.JOptionPane;

import Information.ExpressInformation;

public class SqlOperation 
{
   
   
	private Connection connect;//与数据库的连接
	private PreparedStatement pstmt;//预编译SQL语句对象
	private ResultSet rs;//pstmt返回的表结果集(pstmt关闭该类也自动关闭
	private ArrayList<ExpressInformation> data;//用于存放读取的数据集
	private JDBCutil util;//获取连接类
	
	public SqlOperation()
	{
   
   
		this.util = new JDBCutil();
		this.connect = this.util.getConnection();
		this.data = new ArrayList<ExpressInformation>();
	}
	
	public ArrayList<ExpressInformation> getData()
	{
   
   
		return this.data;
	}
	
	//查询读取数据
	public void Load()
	{
   
   
		//查询用的SQL语句
		String SelectSQL = "SELECT *" + "FROM information";

		try
		{
   
   
			this.pstmt = this.connect.prepareStatement(SelectSQL);//这个方法需要捕捉异常
			this.rs = this.pstmt.executeQuery();//执行查询SQL语句,获得表的结果集
			while(rs.next())
			{
   
   
				this.data.add(new ExpressInformation(rs.getString(1),rs.getInt(2),
						rs.getString(3),rs.getString(4),
						rs.getString(5),rs.getString(6)));//获得每一列的数据(和类的构造函数参数顺序对应)
			}
			this.rs.close();//立即释放该对象的JDBC和数据库资源
			this.pstmt.close();//同上
		}
		catch(SQLException e)
		{
   
   
			System.out.println("Data load error");
			e.printStackTrace();
		}
	}
	
	//插入新的订单
	public void Insert(ExpressInformation order)
	{
   
   
		//插入用的SQL语句
		//初始化就需要设置的列(INSERT INTO后表名+列 ,要按顺序对应,占位符的数量也要相同,不然会产生越界错误
		String InsertSQL = "INSERT INTO information(id,kind,sender,addressee,SendDate,ReceiveDate)"
                        + "VALUES(?,?,?,?,?,?)";//?是占位符,必须在执行前通过setXXX方法进行设置
		try
		{
   
   
			this.pstmt = this.connect.prepareStatement(InsertSQL);
			//对应数据库中表的行的每一列,顺序不能错
			//这些setXXXX方法都是设置之前预编译在pstmt中的SQL语句的占位符
			this.pstmt.setString(1, order.getID());
			this.pstmt.setInt(2, order.getKind());
			this.pstmt.setString(3, order.getSender());
			this.pstmt.setString(4, order.getAddressee());
			this.pstmt.setString(5, order.getSendDate());
			this.pstmt.setString(6, order.getReceiveDate());

			this.pstmt.executeUpdate();//执行更新SQL语句,SQL更新语句是预编译在其中的
			JOptionPane.showMessageDialog(null, "订单创建成功");//如果上句出现异常,将会跳过这句执行catch的提示
			
			this.pstmt.close();
		}
		catch(SQLException e)
		{
   
   
			JOptionPane.showMessageDialog(null, "订单已存在");
			e.printStackTrace();
		}
	}
	
	public void Delete(String d_id)
	{
   
   
		//删除用的SQL语句,因为id用String型存储,WHERE筛选记得用' '括住传入的id变量
		String DeleteSQL = "DELETE FROM information "+ "WHERE id = ?";
		try
		{
   
   
			this.pstmt = this.connect.prepareStatement(DeleteSQL);
			this.pstmt.setString(1, d_id);
			this.pstmt.executeUpdate();
			this.pstmt.close();
		}
		catch(SQLException e)
		{
   
   
			e.printStackTrace();
		}
	}
	
	public void Updata(String u_id,String u_col)//修改订单的订单号和将要修改的列
	{
   
   
		SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");//设置日期格式
		String date = df.
JAVA, JSP, SSM, JQUERY, JQUERY EASYUI, MYSQL, HTML, CSS, JAVASCRIPT ⑴角色管理:系统通过角色管理对不同角色进行权限分配,实现不同角色的用户登录系统拥有不同的权限功能。系统分为超级管理员、订单管理员、车辆管理员。新注册用户登录系统没有任何操作权限,因为新注册用户没有被分配角色,这需要超级管理员给新用户分配相应角色使该用户拥有该角色的权限。同时超级管理员可进行新角色的创建,删除已有角色,修改角色功能。 ⑵用户管理:拥有用户信息管理权限的用户登录后可创建新用户,修改用户信息(密码、联系方式、邮箱等),删除用户,为用户分配角色。但用户列表中不会有超级管理员信息,因为超级管理员信息在系统中不应出现不能被修改,防止误操作。 ⑶配货管理:配货管理模块中分为发货管理、车源路线管理、订单管理子模块。发货管理,用户可进行订单的创建,系统自动生产15位的订单号(不可修改),用户填写下单人,下单人联系方式,下单人地址,下单日期,并添加此订单需要运送的货物,保存生成订单。同时可进行订单的修改,批量删除,按订单号查询操作。车源路线管理,用户可选择为还未分配运送车辆的订单分配运送车辆,指定行车路线。车辆处于维修状态的不出现在选择列表中,车辆载重小于货物总重量时通过消息提醒用户重新选择。订单确认,当运送完成时,用户可进行订单确认,确认该订单已完成。 ⑷车辆管理:车辆管理模块中分为车辆类型管理、车辆信息管理、行车路线管理子模块。车辆类型管理,用户可创建新的车辆类型,修改车辆类型信息,删除某种车辆类型,当系统中存在车辆属于该类型,则无法删除同时提醒用户。车辆信息管理,用户对车辆信息进行创建、修改、删除操作。行车路线管理,用户可创建新的行车路线,修改路线信息,删除已有的行车路线。 ⑸货物仓储管理:该模块主要实现库存分类管理、库存信息管理。库存分类管理,用户可创建新的货物类别,修改删除该货物类别或为该类别添加字类别,删除时库存中有属于该类别的商品则无法删除,系统给出提示消息。库存信息管理,用户可创建新的库存货物,为货物分配所属类型,修改库存信息,删除该货物,但删除是逻辑删除,不是物理删除,货物的状态栏显示该商品已被删除。同时提供分页以及按商品名称查询功能。 ⑹数据汇总统计:该模块实现按月度、季度或年度统计各路线的盈利或运货量情况,用户可选择以柱状图或饼图的方式显示。用户可依据统计结构来调整路线及车辆以获得最大化收益。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值