/** jdbc步骤* 1、加载数据驱动* 2、通过DriverManager获取数据库连接对象* 3、通过Connection创建Statement对象1)creatStatement()基本创建2)prepareStatement(String sql)根据传入SQL语句创建预编译的Statement对象* 4、使用Statement执行SQL语句1)execute可任何语句 比较麻烦2)executeUpdate()主要执行DML(受影响行数)、DDL语句(返回0)3)executeQuery只能执行查询语句,执行后返回代表查询的ResultSet对象* 5、操作结果集,如果执行是查询语句,执行结果将返回一个Result对象,该对象保存sql语句查询结果* 6、回收数据库资源*/
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.text.AttributedString;
import java.util.ArrayList;
import java.util.Scanner;
import java.util.concurrent.CountDownLatch;
import java.util.jar.Attributes.Name;import javax.management.loading.PrivateClassLoader;public class Test {/*查询用Statement接口和executeQuery*修改用PreparedStatement子接口和executeUpdate*/public static Connection mysqlConnection() throws SQLException{//抛出SQL类异常    数据库连接方法final String url = "jdbc:mysql://localhost:3306/test_java?serverTimezone=GMT";//数据库urlfinal Connection conn=DriverManager.getConnection(url, "root","ler210023");//DriverManager应用程序与数据库建立连接 尝试建立到给定的数据库url的连接return conn;}/** sql查询管理员名称是否已被注册*/public static boolean mysqlCheck1(String name) throws SQLException  {boolean flag=false;Connection conn=mysqlConnection();//调用方法 负责与特定的数据库连接Statement smt=null;//封装调用SQL语句对数据库进行访问的各类操作 提供执行SQL语句和获取数据库在执行完成后的返回结果smt=conn.createStatement();//coonnection方法创建一个 Statement 对象,封装 SQL 语句发送给数据库,通常用来执行不带参数的 SQL 语句。//mysql语句String sql="SELECT * FROM adminers";//将返回值传给rsResultSet rs=smt.executeQuery(sql);//Statement的executeQuery()方法来下达select指令以查询数据库 返回一个ResultSet对象while(rs.next()) {//将光标从当前位置向前移动一行String name1=rs.getString("name");String password1=rs.getString("password");if(name1.equals(name)) {//输入正确return flag;//输入正确 返回false}}smt.close();rs.close();flag=true;return flag;//输入错误返回true}/** sql查询管理员 输入是否正确*/public static boolean mysqlCheck1(String name,String password) throws SQLException  {boolean flag=false;Connection conn=mysqlConnection();//调用方法Statement smt=null;smt=conn.createStatement();//创建一个 Statement 对象,封装 SQL 语句发送给数据库,通常用来执行不带参数的 SQL 语句//mysql语句String sql="SELECT * FROM adminers";ResultSet rs=smt.executeQuery(sql);//executeQuery()方法来下达select指令以查询数据库while(rs.next()) {String name1=rs.getString("name");String password1=rs.getString("password");if(name1.equals(name)&&password1.equals(password)) {//输入都正确return flag;//输入正确 返回false}}smt.close();rs.close();flag=true;return flag;//输入错误返回true}/** sql插入注册管理员*/public static void mysqlInsert1(String name,String password) throws SQLException {//抛出SQL类异常//连接数据库Connection conn=mysqlConnection();//PreparedStatement继承Statement prepareStatement对象防止sql注入的方式是把用户非法输入的单引号用\反斜杠做了转义,从而达到了防止sql注入的目的,安全性高//可执行带参数的SQL语句,用?代替,其后对其进行赋值PreparedStatement smt=null;//判断单号是否已被使用     String sql="insert into adminers(name,password)values(?,?)";//?会被作为参数传入smt=conn.prepareStatement(sql);//SQL 语句被预编译并存储在 PreparedStatement 对象中。smt.setString(1, name);//将指定的参数设置为给定参数的值smt.setString(2, password);int result=smt.executeUpdate();//executeUpdate()是PreparedStatement对象众多的抽象方法中的一个 返回受影响的记录条数 返回值为intif(result==1) {//判断插入数据成功System.out.println("注册成功!");}else {System.out.println("注册失败!");}smt.close();//关闭资源,释放内存}/** 注册管理员*/public static void add1() throws SQLException{Scanner input=new Scanner(System.in);System.out.println("请输入名字:");String name=input.next();System.out.println("请输入密码:");String password=input.next();boolean flag=mysqlCheck1(name);//检索名字是否被使用if(flag==false) {//重复 返回flase System.out.println("你已注册,请登陆");}else{mysqlInsert1(name,password);}}/** sql查询用户名称是否已被注册*/public static boolean mysqlCheck2(String name) throws SQLException  {boolean flag=false;Connection conn=mysqlConnection();Statement smt=null;smt=conn.createStatement();//mysql语句String sql="SELECT * FROM users";//将返回值传给rsResultSet rs=smt.executeQuery(sql);while(rs.next()) {String name1=rs.getString("name");if(name1.equals(name)) {//输入重复return flag;//返回false}}flag=true;return flag;//为重复返回true}/** sql查询用户输入是否正确*/public static boolean mysqlCheck2(String name,String password) throws SQLException  {boolean flag=false;Connection conn=mysqlConnection();Statement smt=null;smt=conn.createStatement();//mysql语句String sql="SELECT * FROM users";ResultSet rs=smt.executeQuery(sql);while(rs.next()) {String name2=rs.getString("name");String password2=rs.getString("password");if(name2.equals(name)&&password2.equals(password)) {//检索输入是否正确return flag;//输入正确返回false}}flag=true;return flag;//输入错误返回true}/** sql插入注册用户*/public static void mysqlInsert2(String name,String password) throws SQLException {//抛出SQL类异常Connection conn=mysqlConnection();PreparedStatement smt=null;String sql="insert into users(name,password)values(?,?)";//?会被作为参数传入smt=conn.prepareStatement(sql);smt.setString(1, name);//设置smt.setString(2, password);int result=smt.executeUpdate();//executeUpdate()是PreparedStatement对象众多的抽象方法中的一个 返回受影响的记录条数 返回值为1或0if(result==1) {//判断插入数据成功System.out.println("注册成功!");}else {System.out.println("注册失败!");}smt.close();//关闭资源,释放内存}/** 注册用户*/public static void add2() throws SQLException{Scanner input=new Scanner(System.in);System.out.println("请输入名字:");String name=input.next();System.out.println("请输入密码:");String password=input.next();boolean flag=mysqlCheck2(name);//调用方法 检索名字是否被使用if(flag==false) {//重复 返回flase System.out.println("你已注册,请登陆");}else{mysqlInsert2(name,password);}}/** 查询快递表检索快递单号是否被使用*/public static boolean mysqlCheck(String number) throws SQLException  {boolean flag=false;Connection conn=mysqlConnection();Statement smt=null;smt=conn.createStatement();//mysql语句String sql="SELECT * FROM express";ResultSet rs=smt.executeQuery(sql);while(rs.next()) {String number1=rs.getString("number");if(number1.equals(number)) {//比较查询的单号与输入的单号判断单号是否已被使用flag=true;return flag;//已被使用返回true}}return flag;//未被使用返回flag}/** sql输入快递信息*/public static void mysqlInsert(String number,String a_date,String t_date,String K_name) throws SQLException {//抛出SQL类异常boolean flag=mysqlCheck(number);//调用方法 判断是否单号被使用if(flag) {//真,则已被使用System.out.println("该单号已被使用");}//未被使用else {Connection conn=mysqlConnection();//表示一条预编译过的 SQL 语句PreparedStatement smt=null;    String sql="insert into express(number,a_date,t_date,k_name)values(?,?,?,?)";//?会被作为参数传入smt=conn.prepareStatement(sql);smt.setString(1, number);//对参数进行设置smt.setString(2, a_date);smt.setString(3, t_date);smt.setString(4, K_name);int result=smt.executeUpdate();if(result==1) {//判断插入数据成功System.out.println("分配快递成功");}else {System.out.println("分配快递失败");}smt.close();//关闭资源,释放内存}}/** 添加快递信息*/public static void add() throws SQLException{Scanner input=new Scanner(System.in);while(true) {System.out.println("温馨提示:输入任意数字表示添加快递,0为不添加");if(input.nextInt()==0) {break;}else {  System.out.println("请输入快递单号:");String number=input.next();System.out.println("请输入快递到达时间:");String a_date=input.next();System.out.println("请输入快递提取时间:");String t_date=input.next();System.out.println("请输入快递的所属人的名称:");String k_name=input.next();mysqlInsert(number, a_date, t_date, k_name);}}}/** 查询所有快递*/public static void mysqlShow() throws SQLException {Connection conn=mysqlConnection();Statement smt=null;smt=conn.createStatement();String sql="SELECT * FROM express";ResultSet rs=smt.executeQuery(sql);//循环输出快递信息while(rs.next()) {System.out.println("单号:"+rs.getString("number")+"到达日期:"+rs.getString("a_date")+"提取日期"+rs.getString("t_date")+"姓名:"+rs.getString("k_name"));}rs.close();smt.close();}/** sql更新快递信息*/public static void mysqlUpdate(String number1,String number,String a_date,String t_date,String k_name) throws SQLException {Connection conn=mysqlConnection();PreparedStatement smt=null;String sql="update express set number=?,a_date=?,t_date=?,k_name=? where number=?";//?会被作为参数传入smt=conn.prepareStatement(sql);smt.setString(1, number);//输入修改信息smt.setString(2, a_date);smt.setString(3, t_date);smt.setString(4, k_name);smt.setString(5, number1);//原单号int result=smt.executeUpdate();if(result==1) {//判断插入数据成功System.out.println("快递修改成功");}else {System.out.println("快递修改失败");}smt.close();}/** 修改快递信息*/public static void alter() throws SQLException {Scanner input=new Scanner(System.in);System.out.println("请输入要修改的快递单号:");//原单号String number1=input.next();System.out.println("请输入新的快递单号:");//新单号String number=input.next();System.out.println("请输入快递到达时间:");String a_date=input.next();System.out.println("请输入快递提取时间:");String t_date=input.next();System.out.println("请输入快递的所属人的名称:");String k_name=input.next();mysqlUpdate(number1,number, a_date, t_date, k_name);//调用更新方法}/** sql中查看自己的快递*/public static void sqlFind(String name) throws SQLException {Connection conn=mysqlConnection();Statement smt=null;smt=conn.createStatement();String sql="SELECT * FROM express";ResultSet rs=smt.executeQuery(sql);//循环输出快递信息int  count=0;while(rs.next()) {String k_name=rs.getString("k_name");if(k_name.equals(name)) {System.out.println("请及时取件");System.out.println("单号:"+rs.getString("number")+"到达日期:"+rs.getString("a_date")+"提取日期"+rs.getString("t_date")+"姓名:"+rs.getString("k_name"));count++;}  }if(count==0) {System.out.println("暂无你的快递");}smt.close();rs.close();}/** 查询快递*/public static void findName() throws SQLException {Scanner input=new Scanner(System.in);System.out.println("请输入你的姓名");String name=input.next();sqlFind(name);}/** sql中删除自己的快递*/public static void sqlDelete(String number) throws SQLException {Connection conn=mysqlConnection();PreparedStatement smt=null;String sql="delete from express where number=?";//?会被作为参数传入smt=conn.prepareStatement(sql);smt.setString(1, number);int result=smt.executeUpdate();//对于CREATETABLE或DROPTABLE等不操作行的语句,executeUpdate的返回值总为零if(result!=0) {System.out.println("取件成功!");}else {System.out.println("取件失败!");}smt.close();}/** 领取快递*/public static void takeAway() throws SQLException {Scanner input=new Scanner(System.in);System.out.println("请输入你的快递单号");String number=input.next();sqlDelete(number);}public static void main(String[] args) throws SQLException {// TODO Auto-generated method stub/** 驱动*/try {Class.forName("com.mysql.jdbc.Driver");} catch (Exception e) {e.printStackTrace();//打印输出异常}Scanner input=new Scanner(System.in);Views v=new Views();//欢迎v.welcome();while(true) {//主菜单int menu=v.menu();switch (menu) {case 0://退出System.out.println("欢迎下次光临!");return;case 1://注册管理员add1();break;case 2://注册普通用户add2();break;case 3://管理员登陆System.out.println("登陆请输入姓名:");String n1=input.nextLine();System.out.println("请输入密码:");String p1=input.nextLine();boolean flag1=mysqlCheck1(n1,p1);//检索是否输入正确if(flag1) {//输入错误 返回trueSystem.out.println("输入错误");break;}//输入正确else {System.out.println("登陆成功");while(true) {int gmenu=v.gMenu();switch(gmenu) {case 0://退出return;case 1://分配快递add();break;case 2://查看所有快递System.out.println("所有快递如下:");mysqlShow();break;case 3://修改快递alter();break;}if(gmenu==4)//返回上一步break;}}break;case 4://普通用户登录System.out.println("登陆请输入姓名:");String n2=input.nextLine();System.out.println("请输入密码:");String p2=input.nextLine();boolean flag2=mysqlCheck2(n2,p2);if(flag2) {//真,即输入错误System.out.println("输入错误");break;}//输入正确else{System.out.println("登陆成功");while(true) {int pmenu=v.pMenu();switch(pmenu) {case 0://退出return;case 1://查看快递findName();break;   case 2://取走快递takeAway();break;}if(pmenu==3)//返回上一步break;}}break;}}
}}  
/** 管理员菜单*/public int gMenu() {System.out.println("------你好,管理员-------");System.out.println("1.快递分配");System.out.println("2.查看所有快递");System.out.println("3.修改快递信息");System.out.println("4.返回上一步");System.out.println("0.退出");System.out.println("---------------------");System.out.println("请根据提示,选择业务");int c=input.nextInt();if(c<0||c>4) {//输入异常System.out.println("输入异常,请重新输入");return gMenu();}return c;}/** 用户菜单*/public int pMenu() {System.out.println("------你好,用户员-------");System.out.println("请根据提示,输入功能序号");System.out.println("1.查看有否有快递");System.out.println("2.取走快递");System.out.println("3.返回上一步");System.out.println("0.退出");System.out.println("---------------------");int c=input.nextInt();if(c<0||c>3) {//输入异常System.out.println("输入异常,请重新输入");return pMenu();}return c;}}

快递管理系统JavaI(连接数据库)相关推荐

  1. 基于javaweb+jsp的校园快递管理系统(JavaWeb JSP MySQL Servlet SSM SpringBoot Bootstrap Ajax)

    基于javaweb+jsp的校园快递管理系统(JavaWeb JSP MySQL Servlet SSM SpringBoot Bootstrap Ajax) JavaWeb JavaBean JSP ...

  2. 快递管理系统 java_快递管理基于java物流快递管理系统设计.doc

    快递管理基于java物流快递管理系统设计 快递管理系统 毕业设计论文 题 目 快递管理系统 姓 名 王敏雪 所 属 系 数学与计算机科学 专 业 计算机科学与技术 班 级 07级计科三班 指导教师 张 ...

  3. MySQL数据库综合运用——快递管理系统

    MySQL综合运用(快递管理系统) Chapter1 概述 1.1 背景 1.2 系统开发的可行性判断 1.3 目标 1.4 软件 1.5 开发环境 Chapter2 需求分析 2.1 信息要求 2. ...

  4. [附源码]java毕业设计校园快递管理系统

    项目运行 环境配置: Jdk1.8 + Tomcat7.0 + Mysql + HBuilderX(Webstorm也行)+ Eclispe(IntelliJ IDEA,Eclispe,MyEclis ...

  5. javaweb的校园快递管理系统

    <javaweb的校园快递管理系统>该项目采用技术:jsp +servlet +mysql+jdbc+css+js+jQuery等相关技术,项目含有源码.文档.配套开发软件.软件安装教程. ...

  6. 基于JAVA校园快递管理系统计算机毕业设计源码+系统+mysql数据库+lw文档+部署

    基于JAVA校园快递管理系统计算机毕业设计源码+系统+mysql数据库+lw文档+部署 基于JAVA校园快递管理系统计算机毕业设计源码+系统+mysql数据库+lw文档+部署 本源码技术栈: 项目架构 ...

  7. Springboot快递管理系统1k61h计算机毕业设计-课程设计-期末作业-毕设程序代做

    Springboot快递管理系统1k61h计算机毕业设计-课程设计-期末作业-毕设程序代做 [免费赠送源码]Springboot快递管理系统1k61h计算机毕业设计-课程设计-期末作业-毕设程序代做 ...

  8. 快递管理系统 v2.0

    在前面的文章里,我阐述过自己使用Java编写简易的快递管理系统的过程,这一次的更新算是一个跨度较大的更新,包含了全新的内容.对此有兴趣的伙伴可以继续往下阅读了解: 2.0版本新加入的特性: 使用链表存 ...

  9. 快递管理系统 V2.0

    快递管理系统2.0是1.0的升级版 import card_tool ##这是主程序 ##读取文件中的数据 card_tool.read() while True: ##显示功能菜单 card_too ...

最新文章

  1. nuc8 黑苹果_萝莉的身材野兽的心——NUC8 MacOS黑苹果-Win10双系统体验
  2. Centos linux php扩展安装步骤
  3. prthon日期型、字符串、数值、时间戳相互转换
  4. HTTP幂等性及GET、POST、PUT、DELETE的区别
  5. JZOJ7月18日提高组T1 Family
  6. cmd命令安装python第三方库_Python如何安装第三方库
  7. 2021-1016-复盘 强势股-风口综合实战
  8. 手机常识——查看手机曾经连接过的wifi密码
  9. 《孙子兵法战略运筹之谋攻篇》
  10. 孩子兄弟表示法实现树
  11. 我的世界java1.15更新了什么动物_我的世界:1.15版本这几种生物或许会加入,你期待哪种?...
  12. 最新GEP分销系统网站源码官方
  13. Andriod Studio 连接华为手机调试
  14. linux字体渲染比不上windows,各位是怎么解决字体渲染问题的
  15. 数据恢复工具有哪些? 十个最好的数据恢复软件
  16. 读书笔记:《代码大全2》
  17. softlayer iso_在IBM SoftLayer上使用Datameer从大数据中获得敏锐的见解
  18. (筆記) 使役動詞 (English)
  19. web服务器、Web中间件和Web容器的区别(转载)
  20. 2018.07.17【省赛模拟】模拟B组 比赛题解(总结)

热门文章

  1. wtc java 代码 tpcall(servicename_WebLogic下WTC Service的配置
  2. 招募中|一个小时变身AI应用部署专家,NVIDIA专场公开课 端云边缘协作
  3. labelme 批量转换json文件 详细步骤
  4. 全国手机短信中心号码
  5. Pcie(igb)网卡调试总结:tx uint hang异常解决方法
  6. Mybatis源码学习-MapperMethod
  7. 微信小程序canva生成图片,长按图片识别小程序二维码详解
  8. 数据库常用函数-基础
  9. 古老 IP 新玩法,盘点传统文化出圈秘籍
  10. 7、KSQL刨根问底和实战操作教程