Tnsファイルを使用してplsqlからデータベースに接続できます
ここで、JDBCを使用してJavaからデータベースに接続します。
グーグルを検索すると、この接続文字列を使用する必要があることがわかりました。
"jdbc:Oracle:thin:@//Host:port))/tnsfile)";
私のコンピューター名はmyPC
Tnsfileに書き込まれるポートは5151
だから私はこの接続文字列を試しました
"jdbc:Oracle:thin:@//myPC:5151))/tnsfile"
しかし、私はこの例外を得ました
Java.sql.SQLRecoverableException: IO ERROR: SO Exception was generated
Oracle.net.tns_admin
ファイルを含むフォルダーの場所を指すように、tnsnames.ora
という名前のプロパティを設定する必要があります。次に、DBURLの@
サインの後に、そのファイルのエントリを指定します。以下の例を確認してください。詳細については、次を参照してください。 データソースとURL-Oracleドキュメント
import Java.sql.*;
public class Main {
public static void main(String[] args) throws Exception {
System.setProperty("Oracle.net.tns_admin", "C:/app/product/11.2.0/client_1/NETWORK/ADMIN");
String dbURL = "jdbc:Oracle:thin:@ENTRY_FROM_TNSNAMES";
Class.forName ("Oracle.jdbc.OracleDriver");
Connection conn = null;
Statement stmt = null;
try {
conn = DriverManager.getConnection(dbURL, "your_user_name", "your_password");
System.out.println("Connection established");
stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("SELECT dummy FROM dual");
if (rs.next()) {
System.out.println(rs.getString(1));
}
} catch (Exception e) {
e.printStackTrace();
}
finally {
if (stmt != null) try { stmt.close(); } catch (Exception e) {}
if (conn != null) try { conn.close(); } catch (Exception e) {}
}
}
}
tnsnames.ora
ファイルからのエントリ例:
my_net_service_name = (DESCRIPTION = (ADDRESS =(ここにいくつかのアドレス)) (CONNECT_DATA = (SID = some_SID_name)))
ここで、my_net_service_name
文字列は、私のJavaの例からENTRY_FROM_TNSNAMES
を置き換える必要があるものです。
Tnsnames.oraへのパスをハードコーディングするのではなく、環境から見つける方がよいでしょう。
public static void setTnsAdmin() {
String tnsAdmin = System.getenv("TNS_ADMIN");
if (tnsAdmin == null) {
String oracleHome = System.getenv("Oracle_HOME");
if (oracleHome == null) {
return; //failed to find any useful env variables
}
tnsAdmin = oracleHome + File.separatorChar + "network" + File.separatorChar + "admin";
}
System.setProperty("Oracle.net.tns_admin", tnsAdmin);
}
次のことを試してください。
System.setProperty("Oracle.net.tns_admin", PATH_TO_TNSNAMES.ORA);
Class.forName ("Oracle.jdbc.OracleDriver");
dbUrl = "jdbc:Oracle:thin:@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(Host="+IPHOST+")(PORT="+PORT+"))(CONNECT_DATA=(SERVER = DEDICATED)(SERVICE_NAME="+DBNAME+")))"
conn = DriverManager.getConnection(dbUrl, USERNAME, PASSWORD);
必ず最新バージョンのojdbc.jarを使用してください