package com.comm;
import java.lang.reflect.Field;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
public class BaseDao {
private final String DB_DRIVER="oracle.jdbc.driver.OracleDriver";
private final String DB_URL="jdbc:oracle:thin:@localhost:1521:orcl";
private final String DB_USER="chu1";
private final String DB_PWD="1234";
Connection conn=null;
PreparedStatement pstat=null;
ResultSet res=null;
/**
* 获得数据库链接对象
* **/
public Connection getConn()
{
try
{
Class.forName(DB_DRIVER);
conn=DriverManager.getConnection(DB_URL, DB_USER, DB_PWD);
}
catch(Exception ex)
{
ex.printStackTrace();
}
return conn;
}
/**
* 执行insert,update,delete语句
* sql:执行的sql语句
* param:给sql语句中?赋的值
* int:受影响行数
* **/
public int executeUpdate(String sql,Object[]param)
{
int row=0;
try
{
this.getConn();
pstat=conn.prepareStatement(sql);
if(param!=null&¶m.length>0)
{
for(int x=0;x<param.length;x++)
{
pstat.setObject((x+1),param[x]);
}
}
row = pstat.executeUpdate();
}
catch(Exception ex)
{
ex.printStackTrace();
}
finally
{
this.closeAll(conn, pstat, res);
}
return row;
}
public List executeQuery(String sql,Object[]param,Class cls)
{
List list = new ArrayList();
try
{
this.getConn();
pstat=conn.prepareStatement(sql);
if(param!=null&¶m.length>0)
{
for(int x=0;x<param.length;x++)
{
pstat.setObject((x+1),param[x]);
}
}
Field[]fs=cls.getDeclaredFields();
res = pstat.executeQuery();
while(res.next())
{
//1 创建对象
Object obj=cls.newInstance();
//2 给对象属性赋值
for(int x=0;x<fs.length;x++)
{
Field f=fs[x];
f.setAccessible(true);
String type=f.getType().getName();
if(type.equals("int"))
{
f.set(obj, res.getInt(x+1));
}
if(type.equals("java.lang.String"))
{
f.set(obj, res.getString(x+1));
}
if(type.equals("java.util.Date"))
{
f.set(obj, res.getDate(x+1));
}
}
//3 将对象添加到集合
list.add(obj);
}
}
catch(Exception ex)
{
ex.printStackTrace();
}
finally
{
this.closeAll(conn, pstat, res);
}
return list;
}
/**
* 释放数据库访问资源
* */
public void closeAll(Connection conn,Statement stat,ResultSet res)
{
try
{
if(res!=null)
{
res.close();
}
if(stat!=null)
{
stat.close();
}
if(conn!=null)
{
conn.close();
}
}
catch(Exception ex)
{
ex.printStackTrace();
}
}
}