java - 通过rss访问oracle数据库,不带 host:port

  显示原文与译文双语对照的内容
0 0

当我在查找如何通过JDBC连接到oracle数据库时,我只找到了相同的解决方案。 我必须传递这个连接字符串

 jdbc:oracle:thin:[user/password]@[host][:port]:SID

到 JDBC,这工作。

protected Connection connect()
{
 Connection conn;
 try
 {
 Class.forName(oracle.jdbc.OracleDriver.class.getCanonicalName());
 }
 catch (ClassNotFoundException e)
 {
 return null;
 }
 try
 {
 conn = DriverManager.getConnection("jdbc:oracle:thin:@1.1.1.1:1536:sid","user","passwd");
 }
 catch (SQLException e)
 {
 return null;
 }
 return conn;
}

这种方法的问题在于,我必须找出数据库在哪个 host:port 上。 当我使用 PL/SQL Developer 等数据库工具时,它们不需要。 用户仅提示输入数据库名称,而该工具仍可以以某种方式连接。 所以我想知道这是如何完成的。 目前,我要求 tnsping 在路径中,并在 helper 类( 在上面的示例代码中没有显示) 中提供连接 URL,我调用 tnsping 并解析输出。 这不是一个好方法,我想知道是否有合适的方法来连接。

时间:原作者:6个回答

0 0

你将无法使用普通的JDBC ( 薄驱动程序) 。 你可以尝试使用 OCI,这显然是将理解TNS条目。

原作者:
0 0

对于给定的ORACLE_SID,像 SQL Developer这样的数据库工具可以以从 tnsname.ora 文件获取它的他位置的信息。 这里文件包含以下连接信息的其余部分

ORA11 =
 (DESCRIPTION = 
 (ADDRESS_LIST =
 (ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521))
 )
 (CONNECT_DATA =
 (SERVICE_NAME = ORA11)
 )
)

JDBC驱动程序不查找这里文件,因此将不通过给SID连接来连接。

参考:
Tnsnames.ora Oracle常见问题解答

原作者:
...