zoukankan      html  css  js  c++  java
  • Android网络编程之一个Android下菜单系统模块的实现(服务器端—开桌功能))

    为了实现顾客下单的功能,需要在MySQL数据库的中设置一张表:ordertbl

    然后在服务器端的Wireless项目下的com.moka.entity包中新建一个此表的对象类Order,就像登录部分的User一样:

    /**
     *    用于封装OrderTbl表的实体类
     */
    public class Order {
        // 此订单编号
        private int id;
        // 下单时间
        private String orderTime;
        // 操作用户id
        private int userId;
        // 开桌台号
        private int tableId;
        // 此桌人数
        private int personNum;
        // 结算否
        private int isPay;
        // 备注
        private String remark;
            
        // getters & setters .. 省略
    View Code

    同样,在对应包中建立对于ordertbl表的数据访问对象OrderDao与OrderDaoImpl,他们封装了所有对ordertbl的数据操作:

    public interface OrderDao {
        // 保存开桌信息
        public int saveOrder(Order order);
        
        // 保存菜表信息
        public void saveOrderDetail(OrderDetail orderDetail);
        
        // 更新桌号状态, 有人
        public void updateTableStatus(int tableId);
        
        // 更新桌号状态, 空位
        public void updateTableStatus2(int orderId);
    }
    public class OrderDaoImpl implements OrderDao {
        
        @Override
        public int saveOrder(Order order) {
            // jdbc连接数据库准备工作
            DBUtil util = new DBUtil(); 
            Connection conn = util.openConnection();
            
            // 插入数据库操作用
            String saveOrderSql = "insert into ordertbl (orderTime, userId, tableId, personNum) values (?, ?, ?, ?)";
            PreparedStatement ps = null;
            
            // 读取最新订单号操作用
            Statement statement = null;
            ResultSet orderIdSet = null;
            try {
                ps = conn.prepareStatement(saveOrderSql);
                ps.setString(1, order.getOrderTime());
                ps.setInt(2, order.getUserId());
                ps.setInt(3, order.getTableId());
                ps.setInt(4, order.getPersonNum());
                ps.executeUpdate();
                
                // 返回此订单编号,因为id为自增主键,所以取其最大即为最新订单号
                String returnOrderIdSql = "select max(id) as id from ordertbl";
                statement = conn.createStatement();
                orderIdSet = statement.executeQuery(returnOrderIdSql);
                if (orderIdSet.next()) {
                    // 获得订单号
                    int id = orderIdSet.getInt(1);
                    return id;
                }
            } catch (SQLException e) {
                e.printStackTrace();
            } finally {
                try {
                    if (orderIdSet != null) {
                        orderIdSet.close();
                        orderIdSet = null;
                    }
                    if (statement != null) {
                        statement.close();
                        statement = null;
                    }
                    if (ps != null) {
                        ps.close();
                        ps = null;
                    }
                    if (conn != null) {
                        conn.close();
                        conn = null;
                    }
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            return 0;
        }
    
        @Override
        public void updateTableStatus(int tableId) {
            // jdbc连接数据库准备工作
            DBUtil util = new DBUtil(); 
            Connection conn = util.openConnection();
            
            // 更新此桌状态操作用
            String updateSql = "update tabletbl set flag = 1 where id = ?";
            PreparedStatement ps = null;
            try {
                // 此桌已订出, table表中flag置位
                ps = conn.prepareStatement(updateSql);
                ps.setInt(1, tableId);
                ps.executeUpdate();
                
            } catch (SQLException e) {
                e.printStackTrace();
            } finally {
                try {
                    if (ps != null) {
                        ps.close();
                        ps = null;
                    }
                    if (conn != null) {
                        conn.close();
                        conn = null;
                    }
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
        }
        
        @Override
        public void updateTableStatusEx(int orderId) {
            // 此处暂时不做操作
        }
    
    }
    View Code

    然后写StartTableServlet处理请求与响应:

    public class StartTableServlet extends HttpServlet {
    
        @Override
        protected void doGet(HttpServletRequest req, HttpServletResponse resp)
                throws ServletException, IOException {
            resp.setContentType("text/html");
            // 获取输出打印流
            PrintWriter pw = new PrintWriter(resp.getOutputStream());
            
            // 读取请求中的order数据
            String orderTime = req.getParameter("orderTime");
            String userId = req.getParameter("userId");
            String tableId = req.getParameter("tableId");
            String personNum = req.getParameter("personNum");
            
            // 将他们放入实例化的Order对象封装起来
            Order order = new Order();
            order.setOrderTime(orderTime);
            order.setUserId(Integer.parseInt(userId));
            order.setTableId(Integer.parseInt(tableId));
            order.setPersonNum(Integer.parseInt(personNum));
            
            // 定单数据存入MySQL端,更新对应桌号是否有人的状态,并获得返回的订单号传回客户端
            OrderDao orderDao = new OrderDaoImpl();
            int orderId = orderDao.saveOrder(order);
            orderDao.updateTableStatus(Integer.parseInt(tableId));
            pw.print(orderId);
            pw.flush();
            pw.close();
        }
    
        @Override
        protected void doPost(HttpServletRequest req, HttpServletResponse resp)
                throws ServletException, IOException {
            doGet(req, resp);
        }
    
    }
    View Code

    最后注册新的servlet:

        <servlet>
           <servlet-name>StartTableServlet</servlet-name>
           <servlet-class>com.moka.servlet.StartTableServlet</servlet-class>
         </servlet>
         
        <servlet-mapping>
          <servlet-name>StartTableServlet</servlet-name>
          <url-pattern>/servlet/StartTableServlet</url-pattern>
        </servlet-mapping>

    至此服务器端搭建完毕

  • 相关阅读:
    HDU 1301 Jungle Roads
    HDU 1671 Phone List
    HDU 1992 Tiling a Grid With Dominoes
    HDU 1251 统计难题
    总结自己的近期表现
    Windows API 函数: SetClassLong
    ModifyStyle
    assert,assert_valid,verify,trace用法
    用VC++绘制位图按钮
    Codeforces 144D. Missile Silos 最短路
  • 原文地址:https://www.cnblogs.com/moka/p/3078153.html
Copyright © 2011-2022 走看看