LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1007|回复: 6

Java 与 Oracle 数据库的连接

[复制链接]
发表于 2004-3-23 15:50:29 | 显示全部楼层 |阅读模式
1、OCI方式
先在本地安装Oracle客户端,安装完之后,在安装的路径中可以找到…/jdbc/lib/classes12.zip文件,我们在环境变量classpath中设置classes12.zip所在的路径。
然后通过以下的数据库连接类,在本地通过OCI方式获得Oracle数据库连接。
/**
* 在本地获得数据库连接
*/

  1. package com.j2ee.db;

  2. import java.util.*;
  3. import java.sql.*;
  4. import javax.sql.*;
  5. import java.io.*;
  6. import oracle.jdbc.driver.*;
  7. import javax.naming.*;   

  8. /**
  9. * 通过OCI方式获得Oracle数据库连接
  10. */
  11. public class DbConnection
  12. {
  13.   final static String sDBDriver = "oracle.jdbc.driver.OracleDriver";
  14.   final static String sConnStr = "jdbc:oracle:oci8:sr/sr@ora199";
  15.   
  16.   /**
  17.   *
  18.   */
  19.   public DbConnection()
  20.   {
  21.   }
  22.   
  23.   /**
  24.   * 获得Oracle数据库连接
  25.   */
  26.   public java.sql.Connection connectDbByOci()
  27.   {  
  28.           java.sql.Connection conn=null;  
  29.           try
  30.           {
  31.                   Class.forName(sDBDriver);
  32.                   conn = DriverManager.getConnection(sConnStr);
  33.           }
  34.           catch (Exception e)
  35.           {
  36.               System.out.println("ERROR:"+e.getMessage());
  37.           }
  38.           return conn;
  39.   }
  40. }
  41. 在连接字符串 "jdbc:oracle:oci8:sr/sr@ora199" 中,"sr/sr"为Oracle用户的用户名和口令,"ora199"为数据库服务名。
  42. 2、thin方式
  43. 先到Oracle技术网([url]http://otn.oracle.com/global/cn/software/tech/java/sqlj_jdbc/index.html)下载Oracle[/url] JDBC Drivers,同样地将下载后的zip文件的路径设置在环境变量classpath。
  44. 然后通过以下的数据库连接类,在本地通过thin方式获得Oracle数据库连接。
  45. /**
  46. * 在本地获得数据库连接
  47. */

  48. package com.j2ee.db;

  49. import java.util.*;
  50. import java.sql.*;
  51. import javax.sql.*;
  52. import java.io.*;
  53. import oracle.jdbc.driver.*;
  54. import javax.naming.*;   

  55. /**
  56. * 通过thin方式获得Oracle数据库连接
  57. */
  58. public class DbConnection
  59. {
  60.         private        String sConnStr = "";
  61.   
  62.         /**
  63.         * 缺省构造器
  64.         */
  65.         public DbConnection()
  66.         {
  67.                 sConnStr = "jdbc:oracle:thin:@10.1.4.199:1521:ora199";
  68.         }
  69.        
  70.         /**
  71.         * @param ip,serviceName
  72.         */
  73.         public DbConnection(String ip,String serviceName)
  74.         {
  75.                 sConnStr = "jdbc:oracle:thin:@"+ip+":1521:"+serviceName;
  76.         }
  77.   
  78.         /**
  79.         * 通过thin方式获得Oracle数据库的连接.
  80.         */
  81.         public java.sql.Connection connectDbByThin()
  82.         {          
  83.                 java.sql.Connection conn=null;
  84.                 try
  85.                 {
  86.                         Class.forName(sDBDriver);
  87.                         conn = DriverManager.getConnection(sConnStr,"sr","sr");
  88.                 }
  89.                 catch (Exception e)
  90.                 {
  91.                         System.out.println("ERROR:"+e.getMessage());
  92.                 }
  93.                 return conn;
  94.         }

  95.         /**
  96.         * 通过thin方式获得Oracle数据库的连接.
  97.         * @param userId,password
  98.         */
  99.         public java.sql.Connection connectByJdbc(String userId,String password)
  100.         {          
  101.                 java.sql.Connection conn=null;
  102.                 try
  103.                 {
  104.                         Class.forName(sDBDriver);
  105.                         conn = DriverManager.getConnection(sConnStr,userId,password);
  106.                 }
  107.                 catch (Exception e)
  108.                 {
  109.                         System.out.println("ERROR:"+e.getMessage());
  110.                 }
  111.                 return conn;
  112.         }
  113. }
  114. 这种方式运用起来比较灵活,简单,具有较强的移植性和适用性。只要注意连接字符串"jdbc:oracle:thin:@10.1.4.199:1521:ora199"中具体参数的设置即可。
  115. 3、JdbcOdbc桥方式
  116. 先通过管理工具中的数据源来添加本地对Oracle数据库的连接,然后通过以下的数据库连接类,在本地通过JdbcOdbc桥方式获得Oracle数据库连接。
  117. /**
  118. * 在本地获得数据库连接
  119. */

  120. package com.j2ee.db;

  121. import java.util.*;
  122. import java.sql.*;
  123. import javax.sql.*;
  124. import java.io.*;
  125. import oracle.jdbc.driver.*;
  126. import javax.naming.*;   

  127. /**
  128. * 通过JdbcOdbc桥方式获得Oracle数据库连接
  129. */
  130. public class DbConnection
  131. {
  132.   /**
  133.   *
  134.   */
  135.   public DbConnection()
  136.   {
  137.   }
  138.   
  139.   /**
  140.   * 获得Oracle数据库连接
  141.   */
  142.   public java.sql.Connection connectDbByJdbcOdbcBridge()
  143.   {  
  144.           java.sql.Connection conn=null;  
  145.           try
  146.           {
  147.                   Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
  148.                   con=DriverManager.getConnection("jdbc:odbc:ora199","sr","sr");
  149.           }
  150.           catch (Exception e)
  151.           {
  152.               System.out.println("ERROR:"+e.getMessage());
  153.           }
  154.           return conn;
  155.   }
  156. }
  157. 在getConnection方法中第一个参数"jdbc:odbc:ora199" 中的"ora199"为本地ODBC数据源的数据源名称,第二个参数和第三个参数分别为Oracle的用户名和口令。
  158. 二、通过连接池获得Oracle数据库连接
  159. 这部分主要讲述在iPlanet Application Server 6.5和Sun ONE Application Server 7中Oracle数据库连接池的配置,以及在应用中如何通过连接池获得数据库的连接。
  160. 1、iPlanet Application Server 6.5连接池的配置
  161. 先打开iPlanet Application Server 6.5的管理控制台,选中"database"面板,再选择"External JDBC Drivers"选项后,点击"Add…"按钮,在弹出的对话框中,添加一个名为"ora-type4"的JDBC Driver。

  162. Driver Classpath:该参数填写classes12.zip文件的物理路径。
  163. 然后在"External JDBC DataSources"中选择"Add…",在弹出的对话框中添加一个JNDI名称为"credit2"的数据源。

复制代码
 楼主| 发表于 2004-3-23 15:51:42 | 显示全部楼层
一个实体的例子:

  1. import java.sql.*;
  2. import oracle.jdbc.*;
  3. import oracle.sql.CLOB;



  4. /**
  5. *
  6. * 临时数据库连接
  7. *
  8. */
  9. public class DBConnection {
  10.   static final String driver = "sun.jdbc.odbc.JdbcOdbcDriver";
  11.   static final String url = "jdbc:odbc:AssessSystem";
  12.   static final String user = "User";
  13.   static final String password = "123456";
  14.   static Connection con = null;
  15.   public DBConnection() {
  16.   }
  17.   public static Connection getConnection(){
  18.     try{
  19.       Class.forName(driver);
  20.       con = DriverManager.getConnection(url, user, password);
  21.       if(con != null)
  22.         System.out.println("Connection success !");
  23.       return con;
  24.     }
  25.     catch(Exception e){
  26.       System.out.println("Connection failed !");
  27.       System.out.println(e.toString());
  28.       return null;
  29.     }
  30.   }
  31. }

复制代码
发表于 2004-3-25 21:24:30 | 显示全部楼层
一般用thin方式连接比较好,,,数据库连接的程序还是用dbcp(jndi)比较好。。。
发表于 2004-3-25 21:32:36 | 显示全部楼层
/*
* 创建日期 2003-10-29
* Copyright2003 hantsy<hantsy@163.net>
*
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.


*/
package com.demo;

import java.sql.Connection;
import java.sql.SQLException;

import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.sql.DataSource;

public class ConnectionPool {
   
private static String JNDI_NAME = "java:comp/env/jdbcdemo";
   
private DataSource ds;
private static ConnectionPool mySelf;
   
private ConnectionPool(DataSource ds) {
this.ds = ds;
}
   
public static ConnectionPool getInstance() {
      
try {
           
  if(mySelf == null) {
               
   Context initCtx = new InitialContext();
   DataSource ds = (DataSource)initCtx.lookup(JNDI_NAME);
               
   mySelf = new ConnectionPool(ds);               
               
  }
  return mySelf;
           
} catch(NamingException ex) {
  ex.printStackTrace();
  throw new RuntimeException("connect to database failed!");
}
      
}
   
public Connection getConnection(boolean autoCommit) throws SQLException {
      
Connection con = ds.getConnection();
con.setAutoCommit(autoCommit);
return con;
}
   
}
发表于 2004-3-25 21:33:53 | 显示全部楼层
$TOMCAT_HOME/conf/server.xml中配置。。。。


  1. <ResourceParams name="jdbcdemo">
  2.    <parameter>
  3.      <name>factory</name>
  4.      <value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
  5.    </parameter>
  6.    <parameter>
  7.      <name>maxActive</name>
  8.      <value>100</value>
  9.    </parameter>
  10.    <parameter>
  11.      <name>maxIdle</name>
  12.      <value>30</value>
  13.    </parameter>
  14.    <parameter>
  15.      <name>maxWait</name>
  16.      <value>50000</value>
  17.    </parameter>
  18.   <parameter>
  19.     <name>username</name>
  20.     <value>root</value>
  21.    </parameter>
  22.    <parameter>
  23.     <name>password</name>
  24.     <value>hantsy</value>
  25.    </parameter>
  26.   <parameter>
  27.       <name>driverClassName</name>
  28.       <value>oracle.jdbc.driver.OracleDrive</value>
  29.    </parameter>
  30. <parameter>
  31.      <name>url</name>
  32.      <value>jdbc:oracle:thin:@localhost:1521:demo</value>
  33.    </parameter>
  34. </ResourceParams>
复制代码
发表于 2004-3-29 20:15:43 | 显示全部楼层
hasty是用tomcat的datasource作为中间人的,,,直接用Connection来连接也可以的:)。。
发表于 2004-3-29 20:46:40 | 显示全部楼层
为什么不用应用服务器提供的连接池而要自己来写连接呢,不好
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表