1.采用最新的SQL Server的JDBC驱动。
2.测试一下是连接慢,还是查询慢,用System.currentTimeMillis().

解决方案 »

  1.   

    我测试了一下,是连接慢!Connection       conn=       DriverManager.getConnection(url,user,password);   这一句
      

  2.   

    怎么没高手回应呢 ?
    Connection      conn=      DriverManager.getConnection(url,user,password);  
    这句需要9s 
    不知怎么回事啊
      

  3.   

    Connection conn = DriverManager.getConnection(url,user,password);  
    每次连接都是4500毫秒左右~~
        这是什么原因呢~~
      

  4.   

    // 原因很多,硬件、网络、SQL服务器设置等package sql2005;import java.sql.*; public class Main
    {  public static void main ( String[] args )
      {
        // 创建一个SQL2005的连接字符创.
        String connectionUrl = "jdbc:sqlserver://localhost:1433;databaseName=MyDB;user=user1;password=123456";    // 初始化JDBC驱动.
        Connection con = null;
        Statement stmt = null;
        ResultSet rs = null;    try
        {
          //设置类.
          Class.forName ( "com.microsoft.sqlserver.jdbc.SQLServerDriver" );
          con = DriverManager.getConnection ( connectionUrl );      // 设置SQL命令
          String SQL = "select * from \"case\"";
          // stmt = con.createStatement ();
          stmt = con.createStatement (ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE); // 如果存在 last 或者 first 方法则使用
          rs = stmt.executeQuery ( SQL );      // 遍历结果      while (rs.next ())
          {
            System.out.println ( rs.getString ( 1 ) + " " + rs.getString ( 2 ) );
          }
        }
        catch (Exception e)
        {
          e.printStackTrace ();
        }
        finally
        {
          if ( rs != null )
          {
            try
            {
              rs.close ();
            }
            catch (Exception e)
            {
            }
          }
          if ( stmt != null )
          {
            try
            {
              stmt.close ();
            }
            catch (Exception e)
            {
            }
          }
          if ( con != null )
          {
            try
            {
              con.close ();
            }
            catch (Exception e)
            {
            }
          }
        }
      }
    }
      

  5.   

    用连接池吧你的CONN可以用 单例的吧。
      

  6.   

    改用连接池,可以提高速度的 proxpool 原来用这个,好像叫这个名字,忘了,配置很简单,并且管理方便,楼主可以google一下
      

  7.   

    应该是网速,防火墙或驱动的问题你ping服务器看看反应时间,最好下一个数据库浏览的工具看速度怎样,
    如果也慢就是网络问题,否则就是驱动或你程序问题
      

  8.   

    我也出现过同样的问题,同样是在
    Connection conn = DriverManager.getConnection(url,user,password);  
    时连接了9s,试了很多种方法,连接池也解决不掉,因为连接池也需要连接。
    代码改成这样,突破了9s瓶颈
    ///////////////////////////////
    package util;
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.ResultSet;
    import java.sql.Statement;public class DbUtil {
        
         String driver = "com.microsoft.jdbc.sqlserver.SQLServerDriver";
        
         String url = "jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=stu";

    static { 
    try {
    Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
    } catch (ClassNotFoundException e) {
    // TODO Auto-generated catch block
    System.out.println("驱动加载出错"+e.toString());
    }
    }

    public Connection getConn() throws Exception
    {
    try {
    return DriverManager.getConnection(url,"sa","");
    } catch (Exception e) {
    System.out.println("getConn出错"+e.toString()); 
    throw e;
    }

    }

    public void close(ResultSet rs,Statement stmt ,Connection conn)
    {
    try {
    if(rs!=null)rs.close();
    if(stmt!=null)stmt.close();
    if(conn!=null)conn.close();
    } catch (Exception e) {
    System.out.println("close 出错"+e.toString()); 
    }
    }

    public static void main(String[] args) throws Exception {
    DbUtil db = new DbUtil();
    System.out.println("  db"+ db.getConn());
    }
    }
    /////////////////////////////////////////////
    希望对你有帮助
      

  9.   

    这个问题 多年以前就遇到过了,建议换成成开源驱动   jtds
      

  10.   

    采用数据库连接池啊,你使用什么web服务器啊?可以在web服务器里配置连接池的。
      

  11.   

    我以前也遇到过类似问题,莫名其妙的某个连接就很慢。
    后来把jdk版本从1.5改到1.6就好了。
    你也可以升级jdbc那个jar包的版本看看。