如果是 第1次运行慢,那很正常啊!不光数据源要初始化,jsp也是以servlet的形式在运行的,servlet是长驻内存的~第一次运行慢,后面就会快多了!不用每次调用就创建一个实例。

解决方案 »

  1.   

    5楼有理,强烈推荐JDBC,J-O桥有很多局限,现在已经很少用了,但是影响速度的问题有很多,需要楼主仔细研究,但是不能轻率的放弃相对先进的技术啊!!推荐楼主学习一下HIBERNATE共同进步!!
      

  2.   

    你们说的第一次,是运行程序第一次,还是tomcat运行第一次?两种都试了感觉运行速度还是很慢,打开一个带有数据库连接的jsp文件,本机运行都要20秒,且好象不稳定,同样的页面odbc桥接只须两秒,真受不了。且有的页面只有后都才能打开。而且我装的已经是微软sql server sp3 jdbc驱动了。我的是win2000 adv server.jdbc的连接代码是写在一个javabean里面,jsp要连接数据库就引用这个bean。
    其中第一种方式的javabean代码如下:
    package firm;
    import java.sql.*;public class firm
    {
        Connection conn = null ;
        private Statement stmt=null;
        ResultSet rs=null;
        String url = "jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=I_d_system";
        
      public firm()
      { 
      try
       { 
         Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");  
           }
       
      catch(ClassNotFoundException e1)
      {
       System.err.println("firm():"+e1.getMessage());
       }
     }
        
        //<!--建立数据库连接及定义数据查询-->
       public ResultSet executeQuery(String sql)
        {
             rs=null;
            try
            {
             conn=DriverManager.getConnection(url,"sa","sa");//创建数据库连接对象 
                stmt=conn.createStatement();
                rs=stmt.executeQuery(sql);
            }
            catch(SQLException ex) 
            {
             System.err.println("aq.executeQuery:"+ex.getMessage());
            }
            return rs;
        }
        //<!--定义数据操作-->
        public void executeUpdate(String sql)
        {
            stmt=null;
            rs=null;
            try
            {
             conn=DriverManager.getConnection(url,"sa","sa");
             stmt=conn.createStatement();
             stmt.executeQuery(sql);
             stmt.close();
             conn.close();
            }
            catch(SQLException ex)
            {
                System.err.println("aq.executeQuery:"+ex.getMessage());
            }
        }
        //<!--关闭数据库连接-->
        public void closeStmt()
        {
            try
            {
             stmt.close();
            }
            catch(SQLException e)
            {
             e.printStackTrace();
            }
        }
        public void closeConn()
        {
        try
        {
        conn.close();
        }
        catch(SQLException e)
        {
        e.printStackTrace();
        }
        }
     }麻烦大虾帮我看一下,谢谢。
      

  3.   

    你不要每次执行操作都新建一个连接呢,还有不要用Statement对象,改用PreparedStatement对象执得操作。