【发布时间】:2014-09-02 12:12:25
【问题描述】:
我正在尝试建立从 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
我做错了什么?任何答案将不胜感激.. 谢谢
【问题讨论】:
-
您是否确认您的 oracle 数据库已设置为接受来自本地主机外部的连接?
-
我希望您示例中的用户名和密码是假的 :-)
-
ping你的远程主机并检查它是否接受远程连接以及为什么你需要注册两次驱动程序?
-
您是否尝试过 tnsnames.ora 文件中的连接字符串。像 String url = "jdbc:oracle:thin:@(description=(address_list= (address=(protocol=tcp)(port=1521)(host=prodHost)))"
-
如果您执行
tnsping SILAHTAR或tnsping XE,输出是什么?从出现 JDBC 错误的同一台机器上执行。