日期:2014-05-16  浏览次数:20345 次

Java传统方式连接Oracle数据库

数据库连接类:ConnOracl

?

package com.zgc.db.oracle;

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

import org.apache.log4j.Logger;


/**
 * 传统方式连接Oracle数据库
 * 
 * 性能、可靠性、稳定性会随着用户访问量的增加逐渐下降
 * 根本问题与Connection对象的创建有关
 * 
 * @author Zhanggc
 * 日期:2011年3月9日 09:20:17
 */
public class ConnOral {
	
	/**
	 * 定义变量
	 */
	private static Connection conn;
	private static Logger log = Logger.getLogger(ConnOral.class);

	/**
	 * 数据库驱动
	 */
	private static final String driver = "oracle.jdbc.driver.OracleDriver";
	/**
	 * 数据库连接串
	 */
	private static final String url = "jdbc:oracle:thin:@127.0.0.1:1521:orcl";
	/**
	 * 用户名
	 */
	private static final String username = "jnzb";
	/**
	 * 密码
	 */
	private static final String password = "jnzb";
	/**
	 * 驱动类实例
	 */
	private static Object driverInstance = null;
	
	/**
	 * 连接数据库
	 * @return
	 * @throws SQLException
	 */
	public static Connection getConn() throws SQLException{
		if (driverInstance == null){
			try {
				driverInstance = Class.forName(driver);
				log.info("Oracle数据库驱动实例不存在,成功创建了一个!");
			} catch (Exception e) {
				e.printStackTrace();
			}
		}
		conn = DriverManager.getConnection(url, username, password);
		return conn;
	}
	
	/**
	 * 关闭数据库连接
	 */
	public static void close(Connection connection,PreparedStatement pstmt,ResultSet rs){
		
		try {
			if (rs != null){
				rs.close();
			}
		} catch (Exception e) {
			log.error("关闭ResultSet对象时失败,原因是"+e.getMessage());
		}
		
		try {
			if (pstmt != null){
				pstmt.close();
			}
		} catch (Exception e) {
			log.error("关闭PreparedStatement对象时失败,原因是"+e.getMessage());
		}
		
		try {
			if (connection != null){
				connection.close();
			}
		} catch (Exception e) {
			log.error("关闭Connection对象时失败,原因是"+e.getMessage());
		}
	}
}

?在上面代码中,数据库连接串,即:

?

private static final String url = "jdbc:oracle:thin:@127.0.0.1:1521:orcl";

?

?中的orcl是sid,千万不能出错,它可通过以下代码来得到:

?

select instance_name from v$instance;或
select name from v$database;

?另外,这种连接方式需要jar包(作者以提供),下载后拷到工程的lib文件夹中即可使用。如果还是不能,右键单击ojdbc14.jar,重新Build Path。