2014-10-07 105 views
0

我與我的java程序使用ojdbc7.jar與oracle 11g進行交互時遇到了連接問題。我在Windows 7平臺上使用jdk 1.8。我的連接出現錯誤。使用oracle 11g與Java程序的連接問題

我在寫我下面整個程序:

package mydao; 
import java.sql.Connection; 
import java.sql.DriverManager; 
import java.sql.PreparedStatement; 
import java.sql.ResultSet; 
import java.sql.SQLException; 
public class AdminDAO { 
    Connection con; 
    public void connectionMethod() { 
     try { 
      Class.forName("oracle.jdbc.driver.OracleDriver"); 
      con = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:oracleEE", "system", "tiger"); 
     } catch (ClassNotFoundException cnfe) { 
      cnfe.printStackTrace(); 
     } catch (SQLException sqle) { 
      sqle.printStackTrace(); 
     } 
    } 
    public void loginCheck(String uid, String pwd) { 
     connectionMethod(); 
     try { 
      String sql = "SELECT * FROM ADMIN_LOGIN WHERE ADMINUID=? AND ADMINPWD=?"; 
      PreparedStatement ps = con.prepareStatement(sql); 
      ps.setString(1, uid); 
      ps.setString(2, pwd); 
      ResultSet rs = ps.executeQuery(); 
      while (rs.next()) { 
       rs.getString(1); 
       rs.getString(2); 
       rs.getString(3); 
      } 
     } catch (SQLException sqle) { 
      sqle.printStackTrace(); 
     } finally { 
      try { 
       con.close(); 
      } catch (SQLException e) { 
       e.printStackTrace(); 
      } 
     } 
    } 
    public static void main(String[] args) { 
     AdminDAO a = new AdminDAO(); 
     a.loginCheck("avi", "avi3"); 
    } 
}   

但我發現了錯誤是這樣的:

run: 
    java.sql.SQLRecoverableException: IO Error: The Network Adapter could not establish the connection 
    at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:673) 
    at oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.java:715) 
    at oracle.jdbc.driver.T4CConnection.<init>(T4CConnection.java:385) 
    at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:30) 
    at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:564) 
    at java.sql.DriverManager.getConnection(DriverManager.java:664) 
    at java.sql.DriverManager.getConnection(DriverManager.java:247) 
    at mydao.AdminDAO.connectionMethod(AdminDAO.java:33) 
    at mydao.AdminDAO.loginCheck(AdminDAO.java:43) 
    at mydao.AdminDAO.main(AdminDAO.java:74) 

    Caused by: oracle.net.ns.NetException: The Network Adapter could not establish the connection 
    at oracle.net.nt.ConnStrategy.execute(ConnStrategy.java:445) 
    at oracle.net.resolver.AddrResolution.resolveAndExecute(AddrResolution.java:464) 
    at oracle.net.ns.NSProtocol.establishConnection(NSProtocol.java:594) 
    at oracle.net.ns.NSProtocol.connect(NSProtocol.java:229) 
    at oracle.jdbc.driver.T4CConnection.connect(T4CConnection.java:1360) 
    at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:486) 
    ... 9 more 

    Caused by: java.net.ConnectException: Connection refused: connect 
    at java.net.DualStackPlainSocketImpl.waitForConnect(Native Method) 
    at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:85) 
    at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:345) 
    at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206) 
    at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188) 
    at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172) 
    at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392) 
    at java.net.Socket.connect(Socket.java:589) 
    at oracle.net.nt.TcpNTAdapter.connect(TcpNTAdapter.java:162) 
    at oracle.net.nt.ConnOption.connect(ConnOption.java:133) 
    at oracle.net.nt.ConnStrategy.execute(ConnStrategy.java:411) 
    ... 14 more 

    Exception in thread "main" java.lang.NullPointerException 
    at mydao.AdminDAO.loginCheck(AdminDAO.java:61) 
    at mydao.AdminDAO.main(AdminDAO.java:74) 
    Java Result: 1 

誰能幫助我走出這個問題的?我很困惑如何從這個錯誤中恢復。

+0

您的oracle監聽器已啓動並正在運行,並且您的數據庫已裝入? – sol4me 2014-10-07 18:38:46

+0

我使用相同的代碼來執行使用mysql服務器,它的工作正常。我在sql plus cmd提示符下訪問相同的結果,但不通過java程序。 – 2014-10-07 18:43:31

+0

命令lsnrctl status的輸出是什麼? – rafalopez79 2014-10-07 19:02:38

回答

0

請嘗試啓動services.msc中的TNS-Listener服務。

0

看來服務器沒有監聽指定的端口或主機名。

檢查您的服務是否正在運行,如果有,請檢查它正在偵聽的端口。如果你的oracle服務正在監聽不同的端口,那麼在你的代碼中更新和檢查。