关于从数据库连接池中获取链接后的关闭问题

数据库连接池中关闭连接其实就是把连接归还给数据库连接池当中
1、不管是否出现异常,finally块中代码都会执行;
2、当try和catch中有return时,finally仍然会执行;
3、finally是在return后面的表达式运算后执行的(此时并没有返回运算后的值,而是先把要返回的值保存起来,管finally中的代码怎么样,返回的值都不会改变,任然是之前保存的值),所以函数返回值是在finally执行前确定的;
4、finally中最好不要包含return,否则程序会提前退出,返回值不是try或catch中保存的返回值。
代码片段:

 public String CreatOrder(Cart cart, Integer userId) {
        Connection conn=null;
        String orderId=null;
        try {
            conn= DButil.getConnection();

        //每次生成一个订单就会同时生成一个商品项同一个id

        //订单号是唯一的:时间戳+userId
        orderId=System.currentTimeMillis()+""+userId;
        //生成一个订单对象
        Order order =new Order(orderId,new Date(),cart.getTotalPrice(),0,userId);
        //订单保存在数据库中
        orderDao.saveOrder(conn,order);

        //遍历购物车中每一个商品项转化为订单项
        for (Map.Entry<Integer, CartItem>entry: cart.getItems().entrySet()){

            CartItem cartItem =entry.getValue();//拿到每一个商品项
            OrderItem orderItem =new OrderItem(null,cartItem.getName(),cartItem.getCount(),cartItem.getPrice(),cartItem.getTotalPrice(),orderId);
            orderItemDao.saveOrderItem(conn,orderItem);

          Book book = bookDao.queryBookById(conn,cartItem.getId());
          book.setSales(book.getSales()+cartItem.getCount());
          book.setStock(book.getStock()-cartItem.getCount());
          bookDao.updateBook(conn,book);
        }
        cart.clear();
        return orderId;
        } catch (SQLException e) {
            e.printStackTrace();
        }finally {
        //此时关闭连接,
            DButil.close(conn,null);
        }
        return orderId;
    }
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Today不上发条

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值