java连接数据库的工具类

声明以下代码并非本人所写,也不是转载。只是参与项目中,总结出来的而已。
public class DBHelper {
	private final static Log log = LogFactory.getLog(DBHelper.class.getClass());
	//获得properties文件的各个参数
        private static String driver = Utils.getString("db_driver");
	private static String url = Utils.getString("db_url");
	private static String dbName = Utils.getString("db_name");
	private static String user = Utils.getString("db_user");
	private static String pass = Utils.getString("db_pass");
	private Connection con = null;
	private Statement statement = null;
	public boolean trans = false;
        //建立数据库连接
	public synchronized Connection getCon() {
		if (con == null) {
			try {
				if (con != null && !con.isClosed()) {
					return con;
				}
				log.debug("Create a connection.");
				Class.forName(driver);
				log.debug("Load driver " + driver + " success.");
				con = DriverManager.getConnection(url + dbName, user, pass);
				log.debug("Connect " + dbName + " with user " + user
						+ " success.");
				//设置不自动提交
				con.setAutoCommit(false);
				log.debug("This connect must commit by user.");
			} catch (Exception e) {
				log.error(e.toString(), e);
			}
		}
		return con;
	}

	public static void configSession(String driver, String url, String dbName,
			String user, String pass) {
		DBHelper.driver = driver;
		DBHelper.url = url;
		DBHelper.dbName = dbName;
		DBHelper.user = user;
		DBHelper.pass = pass;
	}

	public void setCon(Connection con) {
		this.con = con;
	}

	public String getDbName() {
		return dbName;
	}

	public DBHelper() {
		try {
			if (con != null && !con.isClosed()) {
				return;
			}
			log.debug("Create a connection.");
			Class.forName(driver);
			log.debug("Load driver " + driver + " success.");
			con = DriverManager.getConnection(url + dbName, user, pass);
			log.debug("Connect " + dbName + " with user " + user + " success.");
			con.setAutoCommit(true);
			log.debug("This connect is Auto commited.");
			this.setCon(con);
		} catch (Exception e) {
			log.error(e.toString(), e);
		}
	}

	public Statement createStatement() throws SQLException {
		return (statement = this.getCon().createStatement());
	}

	public PreparedStatement createStatement(String sql) throws SQLException {
		return (PreparedStatement) (statement = this.getCon().prepareStatement(
				sql));
	}

	//回滚
	public void rollback() throws SQLException {
		con.rollback();
		close();
	}
        //提交
	public void commit() throws SQLException {
		try {
			con.commit();
			close();
		} catch (SQLException e) {
			log.debug("commit fail.", e);
			rollback();
		}
	}
	//关闭连接
	public void close() {
		if (statement != null) {
			try {
				statement.close();
			} catch (SQLException e) {
				log.error(e.toString(), e);
			} finally {
				log.debug("close statement.");
				statement = null;
			}
		}
		if (con != null) {
			try {
				con.close();
			} catch (SQLException e) {
				log.error(e.toString(), e);
			} finally {
				log.debug("close connection.");
				con = null;
			}
		}
	}

	/**@description:启用事物	
	 * @author:yehui
	 * @return:void
	*/
	
	protected void beginTrans() {
		this.trans = true;
	}

	/**@description:结束事物		
	 * @author:yehui
	 * @return:void
	*/
	
	protected void closeTrans() {
		this.trans = false;
		try {
			this.commit();
		} catch (SQLException e) {
			log.error("close trans fail.", e);
		}
	}


}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
package com.hexiang.utils.dao; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.util.Properties; import javax.naming.Context; import javax.naming.InitialContext; import javax.naming.NamingException; import javax.sql.DataSource; import org.apache.log4j.Logger; public class DBConnection { /** * 获得与数据库的连接 * * @param path * @return Connection */ public static Connection getConn(String classDriver, String url, String user, String pwd) { try { Class.forName(classDriver); return DriverManager.getConnection(url, user, pwd); } catch (ClassNotFoundException ex) { ex.printStackTrace(); } catch (SQLException ex) { ex.printStackTrace(); } return null; } public static Connection getConn(DataSource dataSource) { try { return dataSource.getConnection(); } catch (SQLException ex) { ex.printStackTrace(); } return null; } public static Connection getConn(String jndiName) { try { Context ctx; ctx = new InitialContext(); DataSource dataSource = (DataSource) ctx.lookup("java:comp/env/" + jndiName); return dataSource.getConnection(); } catch (NamingException ex) { ex.printStackTrace(); } catch (SQLException ex) { ex.printStackTrace(); } return null; } public static Connection getConn(Properties properties) { try { String driver = properties.getProperty("jdbc.driverClassName"); String url = properties.getProperty("jdbc.url"); String user = properties.getProperty("jdbc.username"); String password = properties.getProperty("jdbc.password"); Class.forName(driver); return DriverManager.getConnection(url, user, password); } catch (ClassNotFoundException ex) { ex.printStackTrace(); } catch (SQLException ex) { ex.printStackTrace(); } return null; } /** * oracle连接 * * @param path * @return Connection */ public static Connection getOracleConn(String
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值