to alaal(穷街) :
你说哪里没有连接数据库???连了啊,是通过连接池啊,同样的代码换到一个普通的BEAN里就可以。

解决方案 »

  1.   

    你试试在getStmt中返回conn,再传给getRS方法
      

  2.   

    to yeshucheng(叶澍成):
    没有看出错误在哪里啊?代码一行不动,放到一个普通的BEAN里就能查出结果集。
      

  3.   

    建议在getRS()方法中建立stmt因为stmt是不能被共用的,rs也不能共用,只有conn可以被共用(建立多个Statement)
      

  4.   

    to  yaray:
    那为什么在普通的BEAN里可以这么用呢??
      

  5.   

    to allenhe:
    头一次用EJB,写的肯定不好,应该正确地怎么用呢??
      

  6.   

    我回去做了个实验:
    我还是用这个statesless SessionBean,我换成了普通的连接,没用连接池,结果一切正常了,用普通的Bean调用连接池也没问题,就是statesless SessionBean+连接池就出这个问题,这是什么原因呢??各位大侠指点一下啊?
    还有:这种用法不太合理,那合理的statesless SessionBean访问数据库应该是怎么写呢??谢谢各位!!!!
      

  7.   

    我估计是事务设置问题,如果是默认的话,在EJB中是服务器管理事务,那么服务器有可能把两个方法看作是两个不同的事务(这要看服务器的运行情况),当然在两个事务之间是没有办法共享Statement了,所以会出错。
    而在java bean中,一个jsp页面可以认为一个事务,当然就可以共享Statement,所以就不会出错了。
    我建议你在用EJB的时候,最好是一次数据库操作用一个方法写,不要分了。如果真要分的话,那么事务不要用默认设置(服务器管理事务),最好是自己管理事务。