日期:2014-05-16 浏览次数:20599 次
 int executeSQL(String sql) throws SQLException 
 { 
	 Connection conn = getConnection(); 	 // 通过某种方式获取数据库连接
	 PreparedStatement ps = null; 
	 int res = 0; 
	 try{ 
		 ps = conn.prepareStatement(sql); 
		 res = ps.executeUpdate(); 
 }finally{ 
 try{ 
 ps.close(); 
 }catch(Exception e){} 
 try{ 
	 conn.close();// 
 }catch(Exception e){} 
 } 
 return res; 
 }  public class ConnectionParam implements Serializable 
 { 
	 private String driver; 				 // 数据库驱动程序
	 private String url; 					 // 数据连接的 URL 
	 private String user; 					 // 数据库用户名
	 private String password; 				 // 数据库密码
	 private int minConnection = 0; 		 // 初始化连接数
	 private int maxConnection = 50; 		 // 最大连接数
	 private long timeoutValue = 600000;// 连接的最大空闲时间
	 private long waitTime = 30000; 		 // 取连接的时候如果没有可用连接最大的等待时间/** 
 * 连接池类厂,该类常用来保存多个数据源名称合数据库连接池对应的哈希
 * @author liusoft 
 */ 
 public class ConnectionFactory 
 { 
	 // 该哈希表用来保存数据源名和连接池对象的关系表
	 static Hashtable connectionPools = null; 
	 static{ 
		 connectionPools = new Hashtable(2,0.75F); 
	 } 
	 /** 
	 * 从连接池工厂中获取指定名称对应的连接池对象
	 * @param dataSource 	连接池对象对应的名称
	 * @return DataSource 	返回名称对应的连接池对象
	 * @throws NameNotFoundException 	无法找到指定的连接池
	 */ 
	 public static DataSource lookup(String dataSource) 
		 throws NameNotFoundException 
	 { 
		 Object ds = null; 
		 ds = connectionPools.get(dataSource); 
		 if(ds == null || !(ds instanceof DataSource)) 
			 throw new NameNotFoundException(dataSource); 
		 return (DataSource)ds; 
	 } 
	 /** 
	 * 将指定的名字和数据库连接配置绑定在一起并初始化数据库连接池
	 * @param name 		对应连接池的名称
	 * @param param 	连接池的配置参数,具体请见类 ConnectionParam 
	 * @return DataSource 	如果绑定成功后返回连接池对象
	 * @throws NameAlreadyBoundException 	一定名字 name 已经绑定则抛出该异常
	 * @throws ClassNotFoundException 		无法找到连接池的配置中的驱动程序类
	 * @throws IllegalAccessException 		连接池配置中的驱动程序类有误
	 * @throws InstantiationException 		无法实例化驱动程序类
	 * @throws SQLException 				无法正常连接指定的数据库
	 */ 
	 public static DataSource bind(String name, ConnectionParam param) 
		 throws NameAl