package cn.lnu.utils;
import java.io.InputStream;
import java.lang.reflect.Field;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
import java.util.Properties;
import javax.sql.DataSource;
import org.apache.commons.dbcp.BasicDataSourceFactory;
//ʹ��dbcp����Դ�������ݿ����ӳصķ�ʽΪ�û�ά��һ������
public class JdbcUtils {
private static DataSource ds=null;//������һ�����ݿ����ӳأ��û���ס�ӹ������д��������ӳ�
//��̬����飬ֻ����һ��mysql��������ȡһ�������ļ�
static{
try{
InputStream in=JdbcUtils.class.getClassLoader().getResourceAsStream("dbcpconfig.properties");//�������ļ�����һ������
Properties dbcpconfig=new Properties();
dbcpconfig.load(in);
BasicDataSourceFactory factory=new BasicDataSourceFactory();//newһ�����ӳع���
ds=factory.createDataSource(dbcpconfig);//����dbcp�����ļ�����һ�����ݿ����ӳ�
}catch(Exception e){
throw new ExceptionInInitializerError(e);
}
}
//�����ݿ����ӳ�ds�л��һ�����ݿ�����
public static Connection getConnection() throws SQLException {
return ds.getConnection();
}
public static void release(Connection conn,Statement st,ResultSet rs){
if(rs!=null){
try{
rs.close();
}catch(Exception e){
e.printStackTrace();
}
rs=null;
}
if(st!=null){
try{
st.close();
}catch(Exception e){
e.printStackTrace();
}
st=null;
}
if(conn!=null){
try{
conn.close();
}catch(Exception e){
e.printStackTrace();
}
conn=null;
}
}
//�ڹ������г�ȡ��ɾ�IJ����Ĺ������룬���Ƕ���ֻ��sql���Ͳ�����ͬ,���ォ�乫�����ֳ�ȡ��һ��������(����ɾ�ĵ��Ż�)
public static void update(String sql,Object params[]) throws SQLException{
Connection conn=null;
PreparedStatement st=null;
ResultSet rs=null;
try{
conn=getConnection();
st=conn.prepareStatement(sql);
//ʹ�ô��ݹ����IJ���������䴫�ݹ�����sql��䣬ʹ���Ϊһ��������sql���
for(int i=0;i<params.length;i++){
st.setObject(i+1, params[i]);
}
st.executeUpdate();
}finally{
release(conn, st, rs);
}
}
//��������ʵ�ֶԲ�ѯ�������������ȡ�IJ�ѯ�Ż�
public static Object query(String sql,Object params[],ResultSetHandler handler) throws SQLException{
Connection conn=null;
PreparedStatement st=null;
ResultSet rs=null;
try{
conn=getConnection();
st=conn.prepareStatement(sql);
//ʹ�ô��ݹ����IJ���������䴫�ݹ�����sql��䣬ʹ���Ϊһ��������sql���
for(int i=0;i<params.length;i++){
st.setObject(i+1, params[i]);
}
rs=st.executeQuery();
//��������
return handler.handler(rs);//ʹ���û����ݹ������Լ�ʵ�ֿ�ܱ�¶�ӿڵĽ����������������������������ǽ�������ϴ���һ��list���ϻ���һ��javabean��
}finally{
release(conn, st, rs);
}
}
}