关键是我也不知道是哪里的代码有问题啊,时好时坏的!
数据库连接用的是连接池,也是来源也网络:DBConnectionManager.java
数据库操作类:
package dbConnect;import java.io.PrintStream;
import java.sql.*;public class DBQuery
{    Connection conn;
    ResultSet rs;
    Statement stmt;
CallableStatement cs;
private DBConnectionManager connMgr;    public DBQuery()
    {
        conn = null;
        rs = null;
        stmt = null;
        try
        {
connMgr=DBConnectionManager.getInstance();
        }
        catch(Exception classnotfoundexception)
        {            
System.err.println("data begin err: " + classnotfoundexception.getMessage());
        }
    }    public ResultSet executeQuery(String s)
    {
        rs = null;
        try
        {    
conn=connMgr.getConnection("sqlserver");
            stmt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE);
            rs = stmt.executeQuery(s);

        }
        catch(SQLException sqlexception)
        {
            System.err.println("data query connect err:" + sqlexception.getMessage());
System.out.println(s);

        }
        finally{

connMgr.freeConnection("sqlserver",conn);
return rs;

}
    }

public CallableStatement executeProc(String s){
        rs = null;
        try
        {    
conn=connMgr.getConnection("sqlserver");
            cs = conn.prepareCall(s);
return cs;

        }
        catch(SQLException sqlexception)
        {
            System.err.println("data query connect err:" + sqlexception.getMessage());
System.out.println(s);

        }
        finally{

connMgr.freeConnection("sqlserver",conn);
return cs;

}
}
    public int executeUpdate(String s)
    {
int intResult = -1;
        try
        {    
conn = connMgr.getConnection("sqlserver");
            stmt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE);
            intResult = stmt.executeUpdate(s);
        }
        catch(SQLException sqlexception)
        {
            System.err.println("data update connect err:" + sqlexception.getMessage());
System.out.println(s);
intResult = -1;
        }
finally{
connMgr.freeConnection("sqlserver",conn);
return intResult;
}
    }    public void cls()
    {   
try{
if(stmt!=null) stmt.close();         
}catch(SQLException ex){
System.err.println(ex.getMessage());
}
    }
}

解决方案 »

  1.   

    stmt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE);中的ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE去掉,用stmt = conn.createStatement();就可以了。
      

  2.   

    如果去掉就有好多方法不能用了,如rs.last()等,还有取字段时必须按表中的顺序来取,取过一次后也不能取第二次,很烦的!
      

  3.   

    什么意思?最大可以有30个连接,用过就释放,还少吗?
    如果我把ResultSet.CONCUR_UPDATABLE改为ResultSet.CONCUR_READ_ONLY服务器就会稳定很多,不过也会出现其他错误!烦死我了!
      

  4.   

    谢谢大家啦!
    这个问题不解决我的程序算是白做了!
    苦命的人啊!
    wuwuwuwuwu~~~~~~~~~~~~~~~
      

  5.   

    这个问题好像是你区的数据的时候没有按照你select语句中的顺序去。
    例如 select a,b,c from table
    你读取的时候也要按照a,b,c的顺序来读。
    不然就会出你上面的错。
      

  6.   

    支持楼上,jsp有时必须按顺序来查询数据库,不然就会无缘无故的报错,真是sb啊!呵呵!
      

  7.   

    每次用完一个连接后关闭statement!