zoukankan      html  css  js  c++  java
  • jdbc/ojdbc连oracle的三种方式(转)

    文章转自:http://blog.itpub.net/22664653/viewspace-1383092/

    前言
      本文是一篇学习笔记,学习如何通过java jdbc /ojdbc 连接oracle的几种方式。
    一 使用方法
    方法一:使用service_name 连接oracle

    jdbc:oracle:thin:@//<host>:<port>/<service_name> 
    
    例如: jdbc:oracle:thin:@//10.10.10.1:1521/TDB
    注意这里的格式,@后面有//, 这是与使用SID的主要区别。
    对于集群来说,每个节点的SID 是不一样的,但是SERVICE_NAME 确可以包含所有节点。
    方法二: 使用SID 连接oracle
    jdbc:oracle:thin:@<host>:<port>:<SID> 
    
    Example: jdbc:oracle:thin:@10.10.10.1:1521:testdb1 

    注意 该方法已经不做推荐,oracle 官方推荐使用service_name
    方法三:使用tnsname 连接oracle

    jdbc:oracle:thin:@<TNSName> 
    
    Example: jdbc:oracle:thin:@TESTDB

    二 源代码

    import java.sql.Connection;
    
    import java.sql.DriverManager;
    
    import java.sql.ResultSet;
    
    import java.sql.SQLException;
    
    import java.sql.Statement;
    
    public class testDB {
    
    public static final String DBDRIVER = "oracle.jdbc.driver.OracleDriver";
    
    # public static final String DBURL = "jdbc:oracle:thin:@127.0.0.1:1521/testdb1"; //sid 格式 testdb1是sid
    
    # public static final String DBURL = "jdbc:oracle:thin:@//127.0.0.1:1521/TDB";   //servicename TDB是service_name
    
    public static final String DBUSER = "test";
    
    public static final String DBPASSWORD = "xxx";
    
    public static final String DBURL = "jdbc:oracle:thin:@TESTDB"; //tnsname 格式
    
    public static void main(String[] args) throws Exception
    
     {
    
       Connection con = null;
    
       PreparedStatement ps = null;
    
       ResultSet rs = null;
    
      String strSQL = "select count(*) from tsa_dim_deal";
    
    # System.setProperty("oracle.net.tns_admin", "/home/admin/oracle");//使用tnsname 方法的时候 需要制定tnsname.ora所在的文件夹绝对路径
    
      Class.forName(DBDRIVER).newInstance();
    
      con = DriverManager.getConnection(DBURL,DBUSER,DBPASSWORD);
    
      ps = con.prepareStatement(strSQL);
    
      rs = ps.executeQuery();
    
    while(rs.next())
    
      {
    
       System.out.println("num:"+rs.getString(1));
    
      }
    
      rs.close();
    
      ps.close();
    
      con.close();
    
     }
    
    }

    附录:

    [qilong.yangql@rac1 oracle]$ more tnsnames.ora
    
    testdb=
    
      (DESCRIPTION =
    
        (FAILOVER = ON)
    
        (ADDRESS_LIST =
    
          (ADDRESS = (PROTOCOL = TCP)(HOST = 10.10.10.1)(PORT = 1521))
    
          (ADDRESS = (PROTOCOL = TCP)(HOST = 10.10.10.2)(PORT = 1521))
    
          (ADDRESS = (PROTOCOL = TCP)(HOST = 10.10.10.3)(PORT = 1521))
    
          (ADDRESS = (PROTOCOL = TCP)(HOST = 10.10.10.4)(PORT = 1521))
    
          (ADDRESS = (PROTOCOL = TCP)(HOST = 10.10.10.5)(PORT = 1521))
    
          (ADDRESS = (PROTOCOL = TCP)(HOST = 10.10.10.6)(PORT = 1521))
    
        )
    
        (CONNECT_DATA =
    
          (SERVER = DEDICATED)
    
          (SERVICE_NAME = tdb)
    
        )
    
      )

    注意 本文里面 service_name tdb 和tnsname (testdb) 故意设置的不一样.

    三  参考:
    http://razorsql.com/docs/help_oracle.html

  • 相关阅读:
    leetcode 29-> Divide Two Integers without using multiplication, division and mod operator
    ros topic 发布一次可能会接收不到数据
    python中的print()、str()和repr()的区别
    python 部分函数
    uiautomatorviewer错误 unable toconnect to adb
    pyqt 不规则形状窗口显示
    appium 计算器demo
    Spring 3.0 注解注入详解
    Spring Autowire自动装配
    restful 学习地址
  • 原文地址:https://www.cnblogs.com/hellojesson/p/4601826.html
Copyright © 2011-2022 走看看