java tns连接数据库,如何将JDBC连接到tns oracle

I can connect from plsql to database using tns file

Now I want to connect to the database from my Java using JDBC.

What I tried:

I search google and I find that I have to using this connection String:

"jdbc:oracle:thin:@//host:port))/tnsfile)";

My computer name is myPC

The port that is written in the tnsfile is 5151

So I tried this connection String

"jdbc:oracle:thin:@//myPC:5151))/tnsfile"

but I got this Exception

java.sql.SQLRecoverableException: IO ERROR: SO Exception was generated

What am I doing wrong?

How to connect my JDBC to the database using tns file?

解决方案

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) {}

}

}

}

Example entry from tnsnames.ora file:

my_net_service_name=

(DESCRIPTION=

(ADDRESS=(some address here))

(CONNECT_DATA=

(SID=some_SID_name)))

Where my_net_service_name string is what you have to subsitite for ENTRY_FROM_TNSNAMES from my Java example.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值