您的位置:首页 > 编程语言 > Java开发

JDBC BaseDao.java

2012-02-23 12:23 169 查看
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();
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: