Java 连接 Oracle 单例模式

单例模式拿到oracle数据库连接
package com.chy.orclconn;

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

public class OrclConn {
	private final String driverClass = "oracle.jdbc.driver.OracleDriver";//驱动类
	private final String url = "jdbc:oracle:thin:@localhost:1521:chen";//数据库连接url
	private final String username = "chen";//用户名
	private final String password = "chen";//密码
	private Connection conn;
	private Statement st;
	private PreparedStatement ps;
	/**
	 * single pattern;
	 */
	private static OrclConn orclConn;
	private OrclConn(){}
	
	/**
	 * @return OrclConn instance;
	 */
	public static OrclConn getInstance(){
		if(orclConn == null){
			orclConn = new OrclConn();
		}
		return orclConn;
	}
	/**
	 * 
	 * @return an oracle connection
	 */
	private Connection getConnection(){
		try {
			//加载驱动、得到数据库连接
			Class.forName(driverClass);
			conn = DriverManager.getConnection(url, username, password);
		} catch (ClassNotFoundException e) {
			System.out.println("Class DriverClass not found !");
			e.printStackTrace();
		} catch (SQLException e){
			System.out.println("connection failed !");
			e.printStackTrace();
		}
		return conn;
	}
	
	/**
	 * 
	 * @return an sql statement
	 */
	public Statement getStatement(){
		try {
			if(st == null){
				st = getConnection().createStatement();
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return st;
	}
	/**
	 * @param the sql that you want to operate oracle!
	 * @return an sql PreparedStatement;
	 */
	public PreparedStatement getPreparedStatement(String sql){
		try {
			if(ps == null){
				ps = getConnection().prepareStatement(sql);
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return ps;
	}
	
	/**
	 * close connection
	 */
	public void connClose(){
		try {
			if(conn != null){
				if(!conn.isClosed()){
			        conn.close();
			    }
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}
}

测试:

package com.chy.orclconn;

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

public class Test {
	public static void main(String[] args) throws SQLException {
		String sql = "select table_name as tableName from user_tables";
		Statement st = OrclConn.getInstance().getStatement();
		ResultSet rs = st.executeQuery(sql);
		while (rs.next()){
			System.out.println(rs.getString("tableName"));
		}
	}
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值