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();
}
}
}
JDBC BaseDao.java
最新推荐文章于 2021-09-09 15:50:45 发布