我的一个程序,报如下异常。
java.sql.SQLException: Io 异常: The Network Adapter could not establish the connection
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:145)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:190)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:363)
at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:401)
at oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.java:466)
at oracle.jdbc.driver.T4CConnection.<init>(T4CConnection.java:165)
at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:35)
at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:839)
at java.sql.DriverManager.getConnection(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)
at com.metarnet.ipnms.util.jdbc.OracleDBO.executeConnect(OracleDBO.java:43)
at com.metarnet.ipnms.util.jdbc.CommonDBO.autoReConnect(CommonDBO.java:792)
at com.metarnet.ipnms.util.jdbc.CommonDBO.getID(CommonDBO.java:179)
at com.metarnet.ipnms.pm.UniteAlarmData.unitePortData(UniteAlarmData.java:537)
at com.metarnet.ipnms.pm.UniteAlarmData.choose(UniteAlarmData.java:373)
at com.metarnet.ipnms.pm.UniteAlarmData.setTime(UniteAlarmData.java:349)
at com.metarnet.ipnms.pm.UniteAlarmData.setDate(UniteAlarmData.java:191)
at com.metarnet.ipnms.pm.UniteAlarmData.getPortObjId(UniteAlarmData.java:79)
at com.metarnet.ipnms.pm.PerfMain$2.run(PerfMain.java:88)
at java.util.TimerThread.mainLoop(Unknown Source)
at java.util.TimerThread.run(Unknown Source)
java.lang.NullPointerException
at com.metarnet.ipnms.util.jdbc.CommonDBO.getID(CommonDBO.java:180)
at com.metarnet.ipnms.pm.UniteAlarmData.unitePortData(UniteAlarmData.java:537)
at com.metarnet.ipnms.pm.UniteAlarmData.choose(UniteAlarmData.java:373)
at com.metarnet.ipnms.pm.UniteAlarmData.setTime(UniteAlarmData.java:349)
at com.metarnet.ipnms.pm.UniteAlarmData.setDate(UniteAlarmData.java:191)
at com.metarnet.ipnms.pm.UniteAlarmData.getPortObjId(UniteAlarmData.java:79)
at com.metarnet.ipnms.pm.PerfMain$2.run(PerfMain.java:88)
at java.util.TimerThread.mainLoop(Unknown Source)
at java.util.TimerThread.run(Unknown Source)其中 OracleDBO.java是一个数据库连接类,一个创建链接的方法。
类   CommonDBO.java 是一个数据库操作类。
我在这两个类相应报异常的地方都做了try  catch  
我的类中,主要是频繁的操作数据库,有很平凡的打开和关闭,类的大概说明:方法: 循环日期,并取出两个日期,从数据库中取出一个ID号,查询出这个id号的在这个时间下的数据,然后将查询出来的数据插入到一个新的表中,然后删除原来表的数据,在这个工程中,查询,插入,删除,分别打开和删除一次数据库。很频繁的这样轮循时间。每个操作数据库的方法中都有 rs.close; statment.close  jdbcConnection.close;所以可能出现的异常地方都做了try catch  但是还是报异常,要崩溃了!!请高手指点!!谢谢!

解决方案 »

  1.   

    数据库用的SQL SERVER?  应该是驱动的问题。
      

  2.   

    哦  看错误里好像是用的ORACLE数据库   不过服务和监听器有没有启动啊? 或者你连接的地址是否正确。
      

  3.   

    补充!!!!!!!不是,数据库用的是orcale  而且是在运行起来后才偶尔报的异常
    ,就是说,数据库可以连接上,但是在程序不停的操作数据库中的表的时候,偶尔会报这个问题。 而且报完后,还接着执行!
      

  4.   

    hi,咱们同事啊,你的这个异常我以前也见过,
    但是你的“数据库可以连接上,但是在程序不停的操作数据库中的表的时候,偶尔会报这个问题。 而且报完后,还接着执行!”我想还是你的程序有问题,单机数据库有最大连接数,你要确保
    finally{
       try{
        rs.close();
        stmt.colse();
        conn.close();
    }catch(){
    }
    }
    无条件的释放资源,but this isn't fatal error . 程序继续执行
      

  5.   

    at java.sql.DriverManager.getConnection(Unknown Source) 
    at java.sql.DriverManager.getConnection(Unknown Source) java.lang.NullPointerException 
        值没传过去 空指针异常at com.metarnet.ipnms.util.jdbc.CommonDBO.getID(CommonDBO.java:180) 
      

  6.   

    debug    :在getID那你可以打印出值来  System.out.println(**.getID);