2014-05-07 129 views
0

我正在使用Windows 7,64位並使用Eclipse for J2EE。我想通過J2EE代碼顯示來自Oracle數據庫的值。我試着用oracle教程。但是我在Eclipse控制檯中遇到了以下錯誤。請建議我。J2EE連接遠程Oracle數據庫表

附加信息: 1.在遠程oracle設置中,我可以看到服務名稱已啓用,但未啓用SID。 2.我的服務名稱是'sample.lan',因此我在lan內部工作。是否需要進行任何更改如果我通過LAN連接遠程oracleDB表?

連接字符串:

<%@ page import="java.sql.*" %> 

Class.forName("oracle.jdbc.driver.OracleDriver"); 

connection = DriverManager.getConnection("jdbc:oracle:thin:@host:1521:service-name", "username", "password"); 

錯誤:

Connection Failed! Check output console 
java.sql.SQLRecoverableException: I/O-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:711) 
    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:558) 
    at java.sql.DriverManager.getConnection(Unknown Source) 
    at java.sql.DriverManager.getConnection(Unknown Source) 
    at org.apache.jsp.testDBconnection_jsp._jspService(testDBconnection_jsp.java:94) 
    at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:727) 
    at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432) 
    at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390) 
    at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:727) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) 
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) 
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220) 
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122) 
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:501) 
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170) 
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98) 
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950) 
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116) 
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408) 
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1040) 
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:607) 
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:313) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) 
    at java.lang.Thread.run(Unknown Source) 
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) 
    ... 32 more 
Caused by: java.net.ConnectException: Connection refused: connect 
    at java.net.DualStackPlainSocketImpl.waitForConnect(Native Method) 
    at java.net.DualStackPlainSocketImpl.socketConnect(Unknown Source) 
    at java.net.AbstractPlainSocketImpl.doConnect(Unknown Source) 
    at java.net.AbstractPlainSocketImpl.connectToAddress(Unknown Source) 
    at java.net.AbstractPlainSocketImpl.connect(Unknown Source) 
    at java.net.PlainSocketImpl.connect(Unknown Source) 
    at java.net.SocksSocketImpl.connect(Unknown Source) 
    at java.net.Socket.connect(Unknown Source) 
    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) 
    ... 37 more 
+0

您甚至無法啓動數據庫連接。發佈你如何嘗試連接。此外,請檢查您的服務器是否允許通過TCP/IP進行連接,併發送正確的參數/憑證。 –

+0

如果你真的使用**服務名**(而不是** SID **),那麼URL應該是:'jdbc:oracle:thin:@ // host:1521/service-name'(注意'/'而不是':') –

+0

@a_horse_with_no_name:在我添加//而不是:後,出現錯誤'端口號的數字格式無效' – kuttyraj

回答

1
  1. 確保您可以隨時隨地可以執行Java代碼到達您的數據庫主機的端口1521。
  2. 請確保您可以使用某些標準數據庫客戶端(例如SQL * plus)連接到您的數據庫,以檢查您的數據庫是否配置正確
  3. 檢查您的連接URL以確定它是否正確對文檔這裏http://www.orafaq.com/wiki/JDBC

除此之外,只是一句話:如果你的想法是要教育自己或學習JDBC,這是完全正確的;如果您的代碼旨在用於生產,我強烈建議您不要將數據庫訪問混合到您的Presentantion層(JSP)中。我建議你考慮在這種情況下將你的應用程序分成由其責任定義的層。 http://en.wikipedia.org/wiki/Multitier_architecture