如何将JDBC连接到tns oracle [英] How to connect JDBC to tns oracle
问题描述
我可以使用tns文件从plsql连接到数据库
I can connect from plsql to database using tns file
现在我想使用JDBC从我的Java连接到数据库。
Now I want to connect to the database from my Java using JDBC.
我搜索谷歌,我发现我必须使用此连接字符串:
I search google and I find that I have to using this connection String:
"jdbc:oracle:thin:@//host:port))/tnsfile)";
我的电脑名称是 myPC
在tnsfile中写入的端口是 5151
The port that is written in the tnsfile is 5151
所以我尝试了这个连接String
So I tried this connection String
"jdbc:oracle:thin:@//myPC:5151))/tnsfile"
但是我得到了这个例外
java.sql.SQLRecoverableException: IO ERROR: SO Exception was generated
我做错了什么?
如何使用tns文件将我的JDBC连接到数据库?
推荐答案
你必须设置一个属性命名 oracle.net.tns_admin
指向包含 tnsnames.ora
文件的文件夹的位置。然后在数据库URL中的 @
符号后指定该文件中的条目。检查下面的例子。您可以在此处找到更多信息:数据源和URL - Oracle文档
You have to set a property named oracle.net.tns_admin
to point to the location of the folder containing your tnsnames.ora
file. Then you specify the entry from that file after the @
sign in your DB URL. Check example below. You can find more information here: Data sources and URLs - Oracle Documentation
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=(some address here))
(CONNECT_DATA=
(SID=some_SID_name)))
my_net_service_name
字符串是您必须从我的Java示例中为 ENTRY_FROM_TNSNAMES
提供的数据。
Where my_net_service_name
string is what you have to subsitite for ENTRY_FROM_TNSNAMES
from my Java example.
这篇关于如何将JDBC连接到tns oracle的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!