日期:2014-05-19  浏览次数:20628 次

Junit多线程使用JDBC方式获取oracle连接
将方法直接写成main调用,建立两个线程,都能获取到jdbc连接,成功执行查询;但使用JUnit,建立两个线程,在jdbc中就获取不到连接,这是什么原因呢?


附jdbc连接获取方法:

/******************************************************************************
 * Copyright (C) 2011 ShenZhen ComTop Information Technology Co.,Ltd
 * All Rights Reserved.
 * 本软件为深圳康拓普开发研制。未经本公司正式书面同意,其他任何个人、团体不得使用、
 * 复制、修改或发布本软件.
 *****************************************************************************/

package com.comtop.component.desktopremind.MulThreadunittest.JDBC;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class JDBCUtils {

  /**
  * Name of TimesTen driver
  */
  private static final String oracleDriver = "oracle.jdbc.OracleDriver";

  /**
  * Prefix URL to pass to DriverManager.getConnection() for TimesTen Direct Connection
  */
  private static final String oracleUrl = "jdbc:oracle:thin:@10.10.5.2:1521:dotr";

  /** 用户名 */
  private static final String userName = "trd";

  /** 用户密码 */
  private static final String userPwd = "trd";


  /**
  * 获取数据库连接对象
  *
  * @return 数据库连接对象
  * @throws SQLException
  */
  public Connection getConnection() throws SQLException {
  Connection conn = null;
  try {
  Class.forName(oracleDriver);
  conn = DriverManager.getConnection(oracleUrl,userName,userPwd);
  } catch (Exception e) {
  System.out.println("获取连接失败!!!");
  }
  return conn;
  }

  /**
  * 释放DB资源
  *
  * @param rs ResultSet 结果集
  * @param stat Statement 语句对象
  */
  public void closeConnection(ResultSet rs, Statement stat, Connection conn2) {
  closeConnection(rs);
  closeConnection(stat);
  closeConnection(conn2);
  }

  /**
  * 释放DB资源
  *
  * @param rs ResultSet 结果集
  */
  public void closeConnection(ResultSet rs) {
  if (rs != null) {
  try {
  rs.close();
  } catch (SQLException ex) {
  ex.printStackTrace();
  }
  }
  }

  /**
  * 释放DB资源
  *
  * @param stat Statement 语句对象
  */
  public void closeConnection(Statement stat) {
  if (stat != null) {
  try {
  stat.close();
  } catch (SQLException ex) {
  ex.printStackTrace();
  }
  }
  }

  /**
  * 释放DB资源
  *
  * @param stat Statement 语句对象
  */
  public void closeConnection(Connection conn2) {
  if (conn2 != null) {
  try {
  conn2.close();
  } catch (SQLExceptio