2014-09-02 220 views
1

我试图建立从Java到Oracle DB的连接。 (我的数据库在另一台机器上)JDBC连接错误到Oracle数据库

我所知道的URL的形式如下所示:String url =“jdbc:oracle:thin:@hostname:portnumber:sid”;

这里是我的Java代码建立连接:

package net.metric.action; 

import java.io.IOException; 
import java.io.PrintWriter; 
import java.sql.Connection; 
import java.sql.DriverManager; 
import java.sql.ResultSet; 
import java.sql.Statement; 

import javax.servlet.ServletException; 
import javax.servlet.http.HttpServlet; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 

public class DemoServlet extends HttpServlet { 
    private static final long serialVersionUID = 1L; 
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 

    response.setContentType("text"); 
    PrintWriter out = response.getWriter(); 

    System.out.println("-------- Oracle JDBC Connection Testing ------"); 

    try { 

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

    } catch (ClassNotFoundException e) { 

     System.out.println("Where is your Oracle JDBC Driver?"); 
     e.printStackTrace(); 
     return; 

    } 
    try{ 
      DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver()); 
      //CONNECT TO DB 
      String url = "jdbc:oracle:thin:@252.112.60.47:1521:XE"; 
      System.out.println(url); 

      Connection conn = DriverManager.getConnection(url,"EXT025","Tellcom30"); 
       conn.setAutoCommit(false); 
       Statement stmt = conn.createStatement(); 
       System.out.println("OK"); 

       /* ResultSet rset = 
        stmt.executeQuery("select * from SBO_AUDIT_NEW.AUDIT_EVENT"); 
       while (rset.next()) { 
        System.out.println (rset.getString(1)); 
       } 
       stmt.close(); 
       System.out.println ("Ok.");*/ 


    }catch(Exception e){ 
     System.out.println(e.getMessage()); 
    } 

} 

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
    // TODO Auto-generated method stub 
} 

}

我得到这个错误:

-------- Oracle JDBC Connection Testing ------ 
Io exception: The Network Adapter could not establish the connection 

我在做什么错?任何答案将不胜感激。 谢谢

+0

你确认你的oracle数据库设置为接受本地主机之外的连接吗? – abalos 2014-09-02 12:15:41

+0

我希望您的示例中的用户名和密码是假的:-) – Leo 2014-09-02 12:16:10

+0

ping您远程主机,并检查它是否接受远程连接,以及为什么您需要注册驱动程序两次? – SparkOn 2014-09-02 12:16:29

回答

5

有三种方式写入jdbc url。

如果您正在使用的服务名称连接,你应该把/前服务名称

jdbc:oracle:thin:@hostname:port/service_name --- In your case this is how you need the url 

如果您正在使用SID连接,你应该把:SID之前

jdbc:oracle:thin:@hostname:port:sid 

或使用说明你的tns文件后@

jdbc:oracle:thin:@(DESCRIPTION=....) 

但是非他们是你的问题的原因。此错误不是SQLException。这是一个TCP/IP连接异常。这意味着你以某种方式无法到达机器。

你能否用另一个客户端连接到数据库?我看到你正在使用TOAD。你能够连接蟾蜍吗?您需要确保您可以访问服务器。

尝试ping本机命令行

ping 85.29.60.47 

,如果你得到响应回来然后尝试口

telnet 85.29.60.47 1521 -- You must have a telnet client installed to do that. 

你可能会看到ping或远程登录失败的远程登录。所以这可能是一个防火墙问题。您需要做的是与网络管理员联系,然后解决问题。

+0

我无法从我的机器和蟾蜍ping 85.29.60.47在我有Oracle DB的机器上没有执行,我想这是关于防火墙的问题,正如你提到的。非常感谢@gomyes你的回答对我来说很清楚:) – Mertcan 2014-09-02 12:41:00