我的问题是:自己机器上运行java代码,访问公司里的数据库,速度超慢。但访问自己机器上的数据库速度正常。请大家耐心再看几行,我能想到的都想到啦!实在郁闷。下面是排除掉的因素:
1.不是程序的问题,同样的程序在同事机器上访问同样的数据库就没有问题。
  并且程序可以跑通,只是某一句执行需要5秒(后附详细信息)。
2.不是网络的问题,我直接ping数据库,连接时间<1秒。
3.换了2个版本的jdbc驱动程序,没有改善,并且同事也用同样的驱动。我是新手,但这个问题单位同事都帮看了也解决不了,实在太诡异了!求助大家。具体信息 jdk1.5 驱动 mysql-connector-java-3.1.12-bin.jar mysql-connector-java-5.0.5-bin.jar
     数据库 MySQL Server 4.1.18
---------------------------
一个测试用的简单程序,在有注释的那两行中间那句,每次执行都需要5秒。但访问localhost就是瞬间
import java.sql.*;public class dbConn {        public dbConn() {
                super();
        }public static void main(String[] args){
    try {
            Connection con;
                        
            Class.forName("com.mysql.jdbc.Driver");
            System.out.println("333 -------->"+new java.util.Date());   //befroe getConnection
            
            con = DriverManager.getConnection("jdbc:mysql://192.168.5.164/expdb?characterEncoding=utf-8", "expdb", "");            System.out.println("444 -------->"+new java.util.Date());   //after getConnection
            Statement st = con.createStatement();
            String sql="";
            sql= "select name from device_model ";
            ResultSet rs = st.executeQuery(sql);
            while(rs.next()){
                    String name=rs.getString("name");
                    System.out.println("name is "+name);
            }
            if(rs!=null)rs.close();
            if(st!=null)st.close();
            if(con!=null)con.close();
     }catch(Exception e){
             e.printStackTrace();
     }
  }

解决方案 »

  1.   

    程序没有问题啊,你访问自己的机器不存在网速的问题,你换种驱动方式看下,用jdbc-odbc试下看,不过要先装个数据库连接驱动,两中方式比下看
      

  2.   

    楼主试试看加url写完整,加上端口号jdbc:mysql://192.168.5.164:port/expdb
      

  3.   

    我访问自己机器是没有问题的,可是访问192.168.5.164的数据库,那一句就需要5秒以上了。
    jdbc-odbc方式需要下载什么东西呢?我没用过这种方式
      

  4.   

    原来是在局域网上,看样子是路由的吧,看看是防火墙什么在搞鬼吗,其他人不正常就是你机器的问题,把杀毒软件什么关了试下。你访问远程的数据库就用不了jdbc-odbc了,你的数据库是MySQL的,如果要用jdbc-objc就要用到MySQL的链接驱动,google下就知道了
      

  5.   

    我ping 数据库的ip地址,时间小于1秒,用MySQL-Front访问数据库也不会感觉延迟。
    就是程序中会这样另外我在另外一台win2000的机器上装了tomcat作为我们的测试用服务器,
    结果把程序考过去运行也是同样的问题,连数据库超慢。这2台机器都是我装的jdk和jdbc驱动,我怀疑是我哪里做错了,可是实在找不到
      

  6.   

    哈哈问题解决了,谢谢大家的回帖!
    最后发现是jdk的问题,我把原来的jdk1.5卸载 重装jdk1.6就好了!
    不过似乎同事们都用得1.5,我这样写的程序会不会跟他们不兼容呢?
      

  7.   

    又想了想这样似乎不行啊,我的jdk版本得跟同事们保持一致。但是为什么用1.5的就会连接很慢呢,(其实就是那个getConnection()每次都用5秒)。
    还求大家帮我想想为什么,以及解决办法。重新归纳一下问题:
    用jdk版本1.5.0.04就会出现0楼所述问题,最终发现用jdk1.6.0.05问题解决。
    但是同事们用1.5的为什么没这个问题?还有是否会有不兼容问题,我如何跟他们一致?
      

  8.   

    是对的,,做个连接池,很有帮助能减少很大的开销看你说了,你的情况,和很多人的讨论,我觉得还是你的驱动程序的问题,还有可能是你的机器的操作系统的问题,,
    因为在访问远程数据库的时候是要转发的,,有一种方法你可以,,你在本机上用服务建立个数据源,通过数据源连接远程的数据库,然后用程序连本机的数据源,,
    要想从根本上解决这个问题,自己去看下MySQL Server 的远程访问的TCP/IP协议的实现
      

  9.   

    楼主那用jdk5.0.12的可以不,^_^,要不帮忙给测试看看。觉得你的操作系统可能也有问题
      

  10.   

    谢谢大家回帖,这个问题就用jdk1.6解决巴。已证明是我的jdk1.5有问题。