Use idea database to write express e-station

Use the database to write the express e station (this article only writes the code for the idea)


With the continuous development of the express industry, there are more and more express e-stations. Let's write a simple express e-station applet. This article introduces how to use database knowledge to write express e-stations.

##The finished product is as follows:Insert picture description here


1. How does IDEA connect to the database

The first method: directly add connection information to the method body.
Advantages: If you only use one database operation, you can choose.
Disadvantages: multiple database operations need to be written each time, trouble

public void select() {

        Connection conn = null;
        Statement stmt = null;
        ResultSet rs = null;
        try {
            //1.注册驱动
            Class.forName("com.mysql.jdbc.Driver");
            //2.定义sql
            String sql = "select * from kuaidi";
            //3.获取conn
            conn = DriverManager.getConnection("jdbc:mysql:///kuaidi", "root", "123");
            //4.获取执行sql对象Statement
            stmt = conn.createStatement();
            //5.执行sql
            rs = stmt.executeQuery(sql);
            //6处理结果
            while (rs.next()) {
                int danhao = rs.getInt(1);
                int qujianma = rs.getInt(2);
                String gongsi = rs.getString("gongsi");
                String guizi = rs.getString(4);
                System.out.println("单号为:" + danhao + "   " + "取件码为:" + qujianma + "   " + "公司是:" + gongsi + "    " + "柜子在第" + guizi + "个");
            }

        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        } finally {
            if (stmt != null) {
                try {
                    stmt.close();
                } catch (SQLException throwables) {
                    throwables.printStackTrace();
                }
            }

            if (conn != null) {
                try {
                    conn.close();
                } catch (SQLException throwables) {
                    throwables.printStackTrace();
                }
            }

            if (rs != null) {
                try {
                    rs.close();
                } catch (SQLException throwables) {
                    throwables.printStackTrace();
                }
            }


        }
    }

Method 2:
Create a JDBCHelper and a Properties to store the database account and password to help quickly load the driver and release the memory.
Advantages: only need to write once, call it when used.
Disadvantages: write a lot at a time
Insert picture description here

When releasing memory, two or three parameters may be passed in and need to be released, so use the overloaded form to solve


    private static String url;
    private static String user;
    private static String password;
    private static String driver;

    /**
     * 文件的读取,只需要读取一次即可
     */
    static {
        //读取资源文件,并获取值
        try {
            //1.创建properties集合类
            Properties pro = new Properties();
            //2.加载文件
            //获取src路径下的文件的方式--->ClassLoader类加载器
            ClassLoader classLoader = JDBCHelper.class.getClassLoader();
            URL res = classLoader.getResource("jdbc.properties");
            String path = res.getPath();
            
            //pro.load(new FileReader("src/jdbc.properties"));
            pro.load(new FileReader(path));

            url = pro.getProperty("url");
            user = pro.getProperty("user");
            password = pro.getProperty("password");
            driver = pro.getProperty("driver");

            Class.forName(driver);
        } catch (IOException e) {
            e.printStackTrace();
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
    }
    /**
     * 获取连接
     *
     * @return连接对象
     */
    public static Connection getConnection() throws SQLException {
        return DriverManager.getConnection(url, user, password);
    }
    /**
     * 释放资源
     *
     * @param stmt
     * @param conn
     */
    public static void close(Statement stmt, Connection conn) {
        if (stmt != null) {
            try {
                stmt.close();
            } catch (SQLException throwables) {
                throwables.printStackTrace();
            }
        }
        if (conn != null) {
            try {
                conn.close();
            } catch (SQLException throwables) {
                throwables.printStackTrace();
            }
        }
    }
//释放内存
    public static void close(ResultSet rs, Statement stmt, Connection conn) {
        if (stmt != null) {
            try {
                stmt.close();
            } catch (SQLException throwables) {
                throwables.printStackTrace();
            }
        }
        if (rs != null) {
            try {
                rs.close();
            } catch (SQLException throwables) {
                throwables.printStackTrace();
            }
        }
        if (conn != null) {
            try {
                conn.close();
            } catch (SQLException throwables) {
                throwables.printStackTrace();
            }
        }


    }

Second, the realization of the method code

1. Courier increases express delivery

code show as below:

public class Add {
    
    
    Connection conn = null;
    Statement stmt = null;
    Random r= new Random();
    public void addq(int danhao,String gongsi){
    
    
        try {
    
    
            conn = JDBCHelper.getConnection();
            int qujianma = r.nextInt((999999)+1);
            String guizi = Integer.toString(r.nextInt(100)+1);
            String sql = "insert into kuaidi values(" + danhao + "," + qujianma+",'"+gongsi+"','"+guizi+"')";
            stmt = conn.createStatement();
            int a = stmt.executeUpdate(sql);
            System.out.println("取件码为:"+qujianma);
            if(a>0){
    
    
                System.out.println("添加成功");
            }
            else {
    
    
                System.out.println("添加失败");
            }
        } catch (SQLException throwables) {
    
    
            throwables.printStackTrace();
        }
    }
    }

2. The courier deletes the courier

code show as below:

public class Delete {
    
    

    Connection conn = null;
    Statement stmt = null;

    public void delete(int danhao) {
    
    

        try {
    
    
            conn = JDBCHelper.getConnection();
            String sql = "delete from kuaidi where danhao = "+danhao;

            stmt = conn.createStatement();
            int a = stmt.executeUpdate(sql);
            if(a>0){
    
    
                System.out.println("删除成功");
            }
            else {
    
    
                System.out.println("删除失败");
            }

        } catch (SQLException throwables) {
    
    
            throwables.printStackTrace();
        }
    finally {
    
    
        JDBCHelper.close(stmt,conn);
    }
}

Main content code:

public class Imp {
public static void main(String[] args) {
kuaidi();
}

public static void kuaidi() {
    System.out.println("====欢迎使用新职课快递柜====");
    Scanner sc = new Scanner(System.in);
    Random r = new Random();
    while (true) {

        System.out.println("请输入你的身份:1-快递员,2-用户");
        try {
            int a = sc.nextInt();

            if (a < 1 || a > 2) {
                System.out.println("输入有误,请重新输入");
            } else if (a == 1) {
                System.out.println("====欢迎使用新职课快递柜====");
                System.out.println("请选择操作:1-存快递 2-删除快递 3-修改快递信息 4-查看所有快递");
                int b = sc.nextInt();
                switch (b) {
                    case 1: {
                        System.out.println("====欢迎使用新职课快递柜====");
                        System.out.println("请输入快递单号:");
                        int danhao = sc.nextInt();
                        System.out.println("请输入公司名称:");
                        String gongsi = sc.next();
                        Add add = new Add();
                        add.addq(danhao, gongsi);

                        break;
                    }
                    case 2: {
                        System.out.println("====欢迎使用新职课快递柜====");
                        System.out.print("请输入要删除的订单号:");
                        int dingdan = sc.nextInt();
                        Delete delete = new Delete();
                        delete.delete(dingdan);
                        break;
                    }
                    case 3: {
                        System.out.println("====欢迎使用新职课快递柜====");
                        System.out.print("请输入要修改的订单号:");
                        int danhao = sc.nextInt();
                        Alter al = new Alter();
                        boolean q = al.select(danhao);
                        if (q = true) {
                            System.out.println("请输入更改后的单号");
                            int afdanhao = sc.nextInt();
                            al.alter(afdanhao, danhao);
                        } else {
                            System.out.println("请核实订单号");
                        }

                        break;
                    }
                    case 4: {
                        System.out.println("====欢迎使用新职课快递柜====");
                        SelectAll s = new SelectAll();
                        s.select();
                    }
                }

            } else if (a == 2) {
                System.out.println("====欢迎使用新职课快递柜====");
                System.out.println("请输入取件码");
                int qujianma = sc.nextInt();
                Take t = new Take();
                t.take(qujianma);

            }


        } catch (InputMismatchException e) {
            System.out.println();
            System.out.println("请输入数字序号!!!!!!!!");
            System.out.println();
            kuaidi();
        }
    }

}

}


Several other code blocks are similar, only need to modify the sql statement

If you need all the code, or if you have questions, you can send me a private message

Guess you like

Origin blog.csdn.net/weixin_48305172/article/details/112304491