Ошибка соединения JDBC с базой данных Oracle

1

Я пытаюсь установить соединение с Java в Oracle DB. (Моя БД находится на другом компьютере)

Форма 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,"EXT02501231","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 DB настроена на прием соединений извне localhost?
  • 0
    Я надеюсь, что пользователь и пароль в вашем примере являются поддельными :-)
Показать ещё 4 комментария
Теги:
url
jdbc

1 ответ

5
Лучший ответ

Существует три способа записи в URL-адрес jdbc.

Если вы соединяетесь с именем службы, вы должны поставить/перед именем службы

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. Можете ли вы подключиться к жабе? Вам нужно убедиться, что вы можете добраться до сервера.

Попробуйте выполнить pinging на машине в командной строке

 ping 85.29.60.47

если вы получите ответ, попробуйте telnet на порту

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

Вероятно, вы увидите, что ping или telnet не удается. Так что это, вероятно, проблема с брандмауэром. Что вам нужно сделать, так это связаться с сетевыми администраторами о проблеме.

  • 0
    Я не могу пропинговать 85.29.60.47 с моей машины, и жаба не выполняется на машине, на которой у меня есть Oracle DB. Я полагаю, это связано с проблемой брандмауэра, как вы упомянули. Большое спасибо @gomyes, твой ответ был настолько ясен для меня :)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню