检查一下你的连接字符串对不对,如果不对你怎么循环都没有用。
还有就是你的数据库启动了没有。
试一下不用java程序,在自己的机子上使用oracle客户端能不能连接上数据库。

解决方案 »

  1.   

    不用写循环,连接看报什么错误,跟着错误去检查修改就是了。
    先保证数据库没问题,通过客户端先连接下,然后再通过java代码去连接。
      

  2.   

    答楼上所有人:谢谢各位了,1.远程是可以的,ip是可以ping通的
    2.连接字符串是没有问题的,因为有时候可以连接,有时候连接不上。
    3.数据库没有问题的,可以通过客户端连接的。因为是要向数据库里边插入excel数据,写了一个循环来进行读取excel表格到本地,然后再本地读取每条数据插入数据库,插入是利用循环,就是读一条数据,向数据库请求连接,然后插入数据,最后释放,然后再进行下一条数据插入循环,
    可是有时候可以完全导入成功,有时候会失败,报错,数据库连接不上。网络问题基本可以排除
      

  3.   

    这个问题很正常,你读一条就打开一次,看看有时候网络延迟,导致记录没加载到,但是又打开链接,你最好把数据先加载过来,然后批处理一次搞掂吧,这样保险,用try catch回滚下或者跳过继续面的,大概如此了
      

  4.   

    这个问题很正常,你读一条就打开一次,看看有时候网络延迟,导致记录没加载到,但是又打开链接,你最好把数据先加载过来,然后批处理一次搞掂吧,这样保险,用try catch回滚下或者跳过继续面的,大概如此了难道非得一次性写库才可以,循环多次就不行么,搞了多天了,就是不知道问题在哪儿
      

  5.   

     上面的死循环只是保证连接上数据库,连接上之后,while(true){
                    conn1 = DriverManager.getConnection("jdbc:oracle:thin:@132.232.36.137:1521:manage", "server","server");
                    if(conn1!=null){
    //                    System.out.println("异常数据没有导入成功:"+info.getDEST_NUM()+"------------------------------------------------------");
                        break;
                   }
                }
     就break跳出该方法了
      

  6.   

    去掉了注释后我们把所有的可能排查一下1. Connection conn1 = null;
    2. try {
    3.     Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();
    4.    while(true){
    5.        conn1 = DriverManager.getConnection("jdbc:oracle:thin:@132.232.36.137:1521:manage", "server","server");
    6.        if(conn1!=null){
    7.            break;
    8.        }
    9.    }
    10.    PreparedStatement ps = conn1.prepareStatement(sql);
    11.    result = 0;
        /*可能1: 执行完ps后 连接有没有关闭掉,每次执行这一段代码都会去getConnection(""),因为第一行把conn1=null了。如果没有关闭掉连接的话有可能你的程序打开了太多的连接超过了数据的最大连接数。
          可能2:不知道,希望你能贴完整一点的代码。
      

  7.   

    这个问题很正常,你读一条就打开一次,看看有时候网络延迟,导致记录没加载到,但是又打开链接,你最好把数据先加载过来,然后批处理一次搞掂吧,这样保险,用try catch回滚下或者跳过继续面的,大概如此了难道非得一次性写库才可以,循环多次就不行么,搞了多天了,就是不知道问题在哪儿
    看情况上,你说有时ping得通有时又不行,很明显是你那里的网络不行,有时候链接断了,服务器那里没有close,也没设置链接超时时间,所以还是在占用着链接,所以你循环获取链接有时会失败,然后之前的链接可能因为尚未超时或者未手工关闭导致没资源
      

  8.   

    数据库端口要打开,远程服务要打开ip/tcp也要打开
      

  9.   

    这个问题很正常,你读一条就打开一次,看看有时候网络延迟,导致记录没加载到,但是又打开链接,你最好把数据先加载过来,然后批处理一次搞掂吧,这样保险,用try catch回滚下或者跳过继续面的,大概如此了难道非得一次性写库才可以,循环多次就不行么,搞了多天了,就是不知道问题在哪儿
    看情况上,你说有时ping得通有时又不行,很明显是你那里的网络不行,有时候链接断了,服务器那里没有close,也没设置链接超时时间,所以还是在占用着链接,所以你循环获取链接有时会失败,然后之前的链接可能因为尚未超时或者未手工关闭导致没资源
    是不是连接没有释放掉,看一下数据库中的spid,是不是涨的很快。最好让一个connection多做点操作啊
      

  10.   

    这是要逆天啦?有你这么搞的么?缓存Connection