如何将JDBC连接到tns oracle [英] How to connect JDBC to tns oracle

查看:484
本文介绍了如何将JDBC连接到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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆