jhengly
jhengly
2011-03-16 09:59

问下数据库一次操作多个表的问题

已采纳

一次操作一个表还比较简单,但是如果要一次操作多个表就比较麻烦了。
比如说要执行一次更新操作:在update A表的同时,还要insert B表。如果insert B表失败了,那么A表也不应该被更新。
我记得这应该是个事务操作吧,有一个表操作失败了就执行rollback,都成功了才commit提交。
现在的问题就是在dao里面该怎么写事务操作的代码呢?
另外如果有多个session同时访问同一个表,比如说用户a正在查询或更新某条数据,用户b在这同时又准备删除或更新这条数据,怎么进行锁表操作呢(即要a操作完毕后b才能操作)?
求源码。。。。求指点。。。谢谢!
补充一下哈:不要涉及到hibernate和spring的知识,我现在只是单纯的使用struts。

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

3条回答

  • finallygo finallygo 10年前

    ls的代码有问题的,还需要设置setAutoCommited(false);还有connection.commit();

    点赞 评论 复制链接分享
  • redstarofsleep redstarofsleep 10年前

    多用户的情况数据库自己会处理,代码里不用去特别处理了

    点赞 评论 复制链接分享
  • redstarofsleep redstarofsleep 10年前

    [code="java"]
    try {
    Class.forName(this.driver);
    connection = DriverManager.getConnection(connectionUrl, dbUser, dbPass);

            statement = connection.createStatement();
                        for (String sql : sqlList) {
                statement.executeUpdate(sql);
                        }
    
        } catch (SQLException e) {
            if (connection != null) {
                connection.rollback();
            }
            throw e;
        } finally {
            if (statement != null) {
                statement.close();
            }
            if (connection != null && connection.isClosed() == false) {
                connection.close();
            }
        }
    

    [/code]

    点赞 评论 复制链接分享

相关推荐