Я пытаюсь установить соединение с 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
Что я делаю не так? Любой ответ был бы оценен.. Спасибо
Существует три способа записи в 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 не удается. Так что это, вероятно, проблема с брандмауэром. Что вам нужно сделать, так это связаться с сетевыми администраторами о проблеме.