2

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;
}

ただし、このアプローチの問題は、データベースがどのホスト:ポートにあるかを調べなければならないことです。などのデータベースツールを使用する場合PL/SQL Developer、これは必要ありません。ユーザーはデータベース名のみを求められますが、それでもツールは何らかの方法で接続できます。だから私はこれがどのように行われるか知りたいです。現在tnsping、パス内にあることを要求することでこれを実現し、接続 URL を提供するヘルパー クラス (上記のコード例には示されていません) でtnsping、出力を呼び出して解析します。これはあまり良い方法ではなく、適切な接続方法があるかどうか疑問に思っていました。

4

2 に答える 2

1

通常の JDBC (シンドライバー) ではできません。どうやらTNS エントリを理解するOCI を使用してみてください。

于 2013-07-17T14:57:47.363 に答える