public class DBUtil {
public static Vector<Connection> conPool=new Vector<Connection>();
static{
Properties properties=new Properties();
try {
properties.load(DBUtil.class.getResourceAsStream("/db.properties"));
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
String username=properties.getProperty("username");
String password=properties.getProperty("password");
String driver=properties.getProperty("driver");
String url=properties.getProperty("url");
for (int i = 0; i < 10; i++) {
try {
Class.forName(driver);
Connection connection=DriverManager.getConnection(url,username,password);
conPool.add(connection);
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
public static Connection getCon(){
Connection connection=conPool.get(0);
conPool.remove(0);
return connection;
}
public static void releseCon(Connection connection){
conPool.add(connection);
}
public static int zsg(String sql,Object...p){
Connection connection=getCon();
int n=0;
try {
PreparedStatement ps=connection.prepareStatement(sql);
for (int i = 0; i < p.length; i++) {
ps.setObject(i+1, p[i]);
}
n=ps.executeUpdate();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
releseCon(connection);
}
return n;
}
//反射
public static List queryF(Class c ,String sql , Object...p){
Connection connection = getCon();
List list = new ArrayList();
ResultSet rs = null ;
try {
PreparedStatement ps = connection.prepareStatement(sql);
for (int i = 0; i < p.length; i++) {
ps.setObject(i+1, p[i]);
}
rs= ps.executeQuery();
ResultSetMetaData rsmd = rs.getMetaData();
int n = rsmd.getColumnCount();
while(rs.next()){
Object object = c.newInstance();
for (int i = 1; i <= n; i++) {
String filedName = rsmd.getColumnName(i);
Object value = rs.getObject(filedName);
Field field = c.getDeclaredField(filedName);
field.setAccessible(true);
field.set(object, value);
}
list.add(object);
}
} catch (Exception e) {
e.printStackTrace();
}finally{
releseCon(connection);
}
return list;
}
//查询
public static ResultSet query(String sql , Object...p){
Connection connection = getCon();
ResultSet rs = null ;
try {
PreparedStatement ps = connection.prepareStatement(sql);
for (int i = 0; i < p.length; i++) {
ps.setObject(i+1, p[i]);
}
rs= ps.executeQuery();
System.out.println(sql);
} catch (SQLException e) {
e.printStackTrace();
}
return rs ;
}
public static int uniqueQuery(String sql,Object...p){
Connection connection=getCon();
int n=0;
try {
PreparedStatement ps=connection.prepareStatement(sql);
for (int i = 0; i < p.length; i++) {
ps.setObject(i+1, p[i]);
}
ResultSet rs=ps.executeQuery();
rs.next();
n=rs.getInt(1);
} catch (SQLException e) {
e.printStackTrace();
}finally{
releseCon(connection);
}
return n;
}
}