select语句好像没有必要用事务吧

解决方案 »

  1.   

    我測試過真的不會對oracle行加鎖,我用的是tomcat連接池to:  homepna(microclock) 你是用jdbc直接連接oracle,還是用的連接池?
      

  2.   

    我用了jdbc直接连接的,我用hibernate也是可以的,hibernate用的就是容器的连接池啊,我看你贴出来的代码是没有问题的,数据锁定是由数据库完成的,跟datasource没啥关系吧
      

  3.   

    我找到了問題的原因:是我在執行sql語句後,關閉了連接.所以不能對行加鎖String strSql="SELECT * FROM QUOTEHEADER WHERE RKEY=5 FOR UPDATE NOWAIT";
    con.setAutoCommit(false);
    smt=con.prepareStatement(strSql);  
    ResultSet  rs=smt.executeQuery();.....
    if(con !=null){
        try{con.close();} catch(SQLException  e){;}
        con=null;
    }//end if
    可是我又必須斷開連接,否則會用完Oracle的連接.
    各位大俠有什麼好的方案:在jsp中對oracl進行行加鎖?
      

  4.   

    我也不知道,要不你自己增加个锁字段,标识当前记录是否被加锁,这就不用依赖connection了
      

  5.   

    试试先做个没做任何事的update?
    update QUOTEHEADER set RKEY=RKEY WHERE RKEY=5
    selet * from QUOTEHEADER WHERE RKEY=5
      

  6.   

    加锁就是不让其他连接操作这个数据, 只要Connection不要关闭, 继续使用这个Connection操作你的业务即可.如果这样不行, 增加一个锁字段吧. locked  int ,  --0=无锁, 1=锁定
      

  7.   

    To:infowain(infowain) 程序只是打開數據記錄結束,頁面沒有退出,對行加鎖的目的就是為了防止另一用戶打開同一頁面的同一條記錄進行修改並保存.