JDBC BaseDao.java

package cn.com.cloud.utils;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;

import javax.servlet.jsp.jstl.sql.Result;
import javax.servlet.jsp.jstl.sql.ResultSupport;

import org.apache.log4j.Logger;

import cn.com.agree.web.tapestry.util.SystemConfigUtil;

/**
 * <DL>
 * <DT>dao
 * @author HenryLee
 * @version 1.0.0
 * @date 2011-6-20 下午02:55:59
 */
public class BaseDao {
//	public static void main(String[] args) {
//		loadProperties();
//	}
	/**
     * Logger
     */
    static Logger logger = Logger.getLogger(SystemConfigUtil.class);
    
	private static String driverName=null;
	private static String url=null;
	private static String userName=null;
	private static String pwd=null;
	
	/**
	 * 通过静态块加载驱动
	 */
	static
	{
		if (driverName==null || url==null || userName==null || pwd==null) {
			loadProperties();
		}
		loadDriver();
	}
	/**
	 * 加载配置
	 */
	public static void loadProperties()
	{
		logger.error("-----"+BaseDao.class+"正在加载jdbc.properties配置");
		Properties properties=new Properties();
		//读取jdbc.properties配置文件
		InputStream inStream=null;
		String appclassPath = BaseDao.class.getResource("/").getPath();
		appclassPath = appclassPath.replaceAll("%20", " ");
		logger.debug("-----appclassPath:"+appclassPath);
		String path=appclassPath+"..\\conf\\jdbc.properties";
		logger.debug("-----path:"+path);
		
		try {
			inStream=new FileInputStream(path);
		} catch (FileNotFoundException e1) {
			e1.printStackTrace();
		}
		
		try {
			properties.load(inStream);
		} catch (IOException e) {
			e.printStackTrace();
			return;
		}
		
		driverName=properties.getProperty("jdbc.driverClassName");
		url=properties.getProperty("jdbc.url");
		userName=properties.getProperty("jdbc.username");
		pwd=properties.getProperty("jdbc.password");
		
		logger.debug("-----"+BaseDao.class.getName()+"已读取jdbc.properties配置为:"+
				"\n"+"driverName:"+driverName+
				"\n"+"url:"+url+
				"\n"+"userName:"+userName+
				"\n"+"pwd:"+pwd);
	}
	/**
	 * 加载驱动
	 */
	private static void loadDriver()
	{
		try {
			Class.forName(driverName);
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		}
	}
	/**
	 * 获取连接
	 * @return Connection
	 * @throws SQLException
	 */
	public static Connection getConn() throws SQLException
	{
		return DriverManager.getConnection(url, userName, pwd);
	}
	
	/**
	 * 执行增删改
	 * @param sql
	 * @param args
	 * @return boolean
	 */
	public static boolean executeSql(String sql,Object[] args)
	{
		boolean sign=false;
		Connection conn=null;
		PreparedStatement state=null;
		
		try {
			conn=getConn();
			state=conn.prepareStatement(sql);
			if(args!=null && args.length>0)
			{
				for (int i = 0; i < args.length; i++) {
					state.setObject(i+1, args[i]);
				}
			}
			int rows=state.executeUpdate();
			if(rows>0)
				sign=true;
		} catch (SQLException e) {
			e.printStackTrace();
		}
		finally
		{
			closeAll(null, state, conn);
		}
		return sign;
	}		
	
	/**
	 * 执行查询
	 * @param sql
	 * @param args
	 * @return javax.servlet.jsp.jstl.sql.Result;
	 */
	public static Result executeQuery(String sql,Object[] args)
	{
		//JSTL中提供的类,因此要导入JSTL的两个jar包
		Result result=null;
		Connection conn=null;
		PreparedStatement state=null;
		ResultSet rs=null;
		
		
		try {
			conn=getConn();
			state=conn.prepareStatement(sql);
			if(args!=null && args.length>0)
			{
				for (int i = 0; i < args.length; i++) {
					state.setObject(i+1, args[i]);
				}
			}
			rs= state.executeQuery();
			result=ResultSupport.toResult(rs);
		} catch (SQLException e) {
			e.printStackTrace();
		}
		finally
		{
			closeAll(rs, state, conn);
		}
		return result;
	}
	
	/**
	 * 关闭资源
	 * @param rs
	 * @param state
	 * @param conn
	 */
	public static void closeAll(ResultSet rs,Statement state,Connection conn)
	{
		try {
			if(rs!=null)
				rs.close();
			if(state!=null)
				state.close();
			if(conn!=null && conn.isClosed())
				conn.close();
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}
}

 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值