Eclipse下设断点,一执行到“rs = pstmt.executeQuery()” 线程当即死掉,而且没有抛出任何异常!即使加了pstmt.setQueryTimeout(1000)也没有异常抛出!而且更奇怪的是,分别用两台机器做web server,一台没有问题,另一台就不行。原以为是java堆栈空间问题,在catlina.bat加了set JAVA_OPTS=-Xms256m -Xmx512m,没有效果。都是Tomcat5.5,配置完全一样。Oracle9i。有问题的是XP,没有问题的是Win2000。sql语句复杂了点,但在PL/SQL下执行正常,0.1秒之内出结果,而且结果集只有1条记录。

解决方案 »

  1.   

    public List find(String sql)
    {
    List result = new ArrayList();
    Connection conn = null;
    PreparedStatement pstmt = null;
    ResultSet rs = null;
    try
    {
    conn = App.ds.getConnection();
    pstmt = conn.prepareStatement(sql);

    rs = pstmt.executeQuery();//导致线程dead的语句

    while (rs.next())
    {
                                 //循环
    } } catch (Exception e)
    {
    e.printStackTrace();
    } finally
    {
    close(rs);
    close(pstmt);
    close(conn);
    }
    return result;
    }
      

  2.   

    补充:如果sql的查询返回记录数为0则不会有问题,超过1条就不行了~结果集有8个字段。
      

  3.   

    lz把pstmt = conn.prepareStatement("sql查询语句");的sql语句写死测试一下。
      

  4.   

    没有效果。问题的关键是用一台IBM8171做web server是没有问题的,用我的本本(Asus A3)就不行了..