- 浏览: 204752 次
- 性别:
- 来自: 青岛
最新评论
-
sunysh005:
界面太丑了,功能没有问题
SWFUpload+commons-fileupload 上传文件 -
liwh1989:
liwh1989 写道
SWFUpload+commons-fileupload 上传文件 -
liwh1989:
...
SWFUpload+commons-fileupload 上传文件 -
liwh1989:
SWFUpload+commons-fileupload 上传文件 -
貌似掉线:
已用上。多谢!
native2ascii的 java实现
类结构
org
|_demo
|_dao
|_datasource
|_ConnectionTools.java
|_DataSourceFactory.java
|_PropertyDataSourceFactory.java
package org.demo.dao.datasource; import javax.sql.DataSource; /** * 数据源工厂 * @author * @date 2010-6-18 * @file org.demo.dao.datasource.DataSourceFactory.java */ public interface DataSourceFactory { // 默认数据源名称 String defaultDataSourceName = "default"; /** * 返回默认数据源 * @return dataSource or null */ DataSource getDataSource(); /** * 返回指定数据源 * @return dataSource or null */ DataSource getDataSource(String dataSourceName); }
package org.demo.dao.datasource; import java.io.IOException; import java.io.InputStream; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import java.util.Properties; import javax.naming.Context; import javax.naming.InitialContext; import javax.naming.NamingException; import javax.sql.DataSource; import org.apache.commons.dbcp.BasicDataSource; /** * 基于属性文件的数据源工厂 * @author * @date 2010-6-18 * @file org.demo.dao.datasource.PropertyDataSourceFactory.java */ public class PropertyDataSourceFactory implements DataSourceFactory{ // properties private static final String defaultFileName = "datasource.properties"; protected Map<String,Properties> datasourceParams = new HashMap<String,Properties>(); protected Map<String,DataSource> datasourceMap = new HashMap<String,DataSource>(); /** * 构造函数 * @throws RuntimeException * If the datasource.properties could not be found or property key is illegal. * @throws IOException * If could not load properties from datasource.properties */ public PropertyDataSourceFactory()throws IOException{ this(defaultFileName); } /** * 构造函数 * @param fileName * The resource name * @throws RuntimeException * If the resource could not be found or property key is illegal. * @throws IOException * If could not load properties from resource */ public PropertyDataSourceFactory(String fileName)throws IOException{ // getResourceAsStream InputStream in = PropertyDataSourceFactory.class.getClassLoader() .getResourceAsStream(fileName); if(in == null){ throw new RuntimeException("The [" + fileName + "] is not found."); } // load properties from stream Properties props = new Properties(); try { props.load(in); } catch (IOException e){ throw new IOException("Could not load [" + fileName + "] config file.",e); } // analyze properties Iterator<Object> it = props.keySet().iterator(); while(it.hasNext()){ String key = (String)it.next(); String value = props.getProperty(key); int dotIndex = key.indexOf('.'); if(dotIndex < 1){ // dotIndex must > 1 [default.driver=oracle.jdbc.driver.OracleDriver] throw new RuntimeException("Illegal property key [" + key + "]."); } String datasourceName = key.substring(0,dotIndex); key = key.substring(dotIndex + 1); Properties params = datasourceParams.get(datasourceName); if(params == null){ params = new Properties(); datasourceParams.put(datasourceName, params); } params.put(key,value); } } /** * 返回默认数据源 * @return dataSource or null */ public DataSource getDataSource(){ return getDataSource(defaultDataSourceName); } /** * 返回指定数据源 * @param dataSourceName * The dataSource name * @return dataSource or null */ public DataSource getDataSource(String dataSourceName){ DataSource datasource = datasourceMap.get(dataSourceName); if(datasource != null){ return datasource; } datasource = createDataSource(datasourceParams.get(dataSourceName)); if(datasource != null){ datasourceMap.put(dataSourceName, datasource); } return datasource; } /** * 创建一个数据源 * @param props * @return dataSource or null * @throws IllegalArgumentException * If props is null */ protected DataSource createDataSource(Properties props){ if(props == null){ throw new IllegalArgumentException("props can not be null."); } if(props.getProperty("jndiName") != null){ DataSource jndiDataSource = getJndiDataSource(props); if(jndiDataSource != null){ return jndiDataSource; } } BasicDataSource dataSource = new BasicDataSource(); // required dataSource.setDriverClassName(props.getProperty("driverClassName")); dataSource.setUrl(props.getProperty("url")); dataSource.setUsername(props.getProperty("username","")); dataSource.setPassword(props.getProperty("password","")); // options dataSource.setInitialSize(Integer.parseInt(props.getProperty("initialSize","3"))); dataSource.setMaxActive(Integer.parseInt(props.getProperty("maxActive", "10"))); dataSource.setMaxIdle(Integer.parseInt(props.getProperty("maxIdle","5"))); dataSource.setMaxWait(Long.parseLong(props.getProperty("maxWait","-1"))); dataSource.setValidationQuery(props.getProperty("validationQuery")); return dataSource; } /** * 返回 jndi 数据源 * @param props * @return dataSource or null */ protected DataSource getJndiDataSource(Properties props){ String jndiName = props.getProperty("jndiName"); String inContainer = props.getProperty("inContainer"); String prefix = "java:comp/env/"; if(!jndiName.startsWith(prefix) && "true".equals(inContainer)){ jndiName = prefix + jndiName; } // DataSource jndiDataSource = null; Context context = null; try{ context = new InitialContext(props); jndiDataSource = (DataSource)context.lookup(jndiName); if(jndiDataSource != null){ return jndiDataSource; } } catch (NamingException e){ // ignore } finally { try{ if(context != null){ context.close(); } } catch (NamingException e){ // ignore } } return jndiDataSource; } }
package org.demo.dao.datasource; import java.io.IOException; import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import javax.sql.DataSource; /** * 连接工具 * @author * @date 2010-6-18 * @file org.demo.dao.datasource.ConnectionTools.java */ public abstract class ConnectionTools { // 数据源工厂 protected static DataSourceFactory _factory; static { try { _factory = new PropertyDataSourceFactory(); } catch(IOException e){ e.printStackTrace(); } } /** * 返回默认数据源的连接 * @return connection or null */ public static Connection getConnection(){ return getConnection(DataSourceFactory.defaultDataSourceName); } /** * 返回指定数据源的连接 * @param dataSourceName * The dataSource name * @return connection or null */ public static Connection getConnection(String dataSourceName){ DataSource datasource = _factory.getDataSource(dataSourceName); Connection conn = null; if(datasource != null){ try{ conn = datasource.getConnection(); } catch (SQLException e){ e.printStackTrace(); } } return conn; } /** * 关闭连接对象 * @param rset * ResultSet * @param stmt * Statement * @param conn * Connection */ public static void close(ResultSet rset,Statement stmt,Connection conn){ try { if (rset != null) rset.close(); } catch (Exception e) {} try { if (stmt != null) stmt.close(); } catch (Exception e) {} try { if (conn != null) conn.close(); } catch (Exception e) {} } }
# datasource.properties
# oracle default.driverClassName=oracle.jdbc.driver.OracleDriver default.url=jdbc:oracle:thin:@localhost:1521:test default.username=scott default.password=tiger #
package org.demo.dao; import java.sql.Connection; import java.sql.ResultSet; import java.sql.Statement; import org.demo.dao.datasource.ConnectionTools; // // library dependencies: // * commons-dbcp-1.3.jar [http://commons.apache.org/dbcp/download_dbcp.cgi] // * commons-pool-1.5.4.jar [http://commons.apache.org/pool/download_pool.cgi] // /** * @author * @date 2010-6-18 * @file org.demo.dao.Main.java */ public class Main { /** * @param args */ public static void main(String[] args)throws Exception{ // get connection Connection conn = ConnectionTools.getConnection(); // execute business operations Statement stmt = null; ResultSet rset = null; stmt = conn.createStatement(); rset = stmt.executeQuery("select 1 from dual"); int cols = rset.getMetaData().getColumnCount(); while(rset.next()){ for(int i=1;i<=cols;i++){ System.out.print("\t" + rset.getObject(i)); } System.out.println(""); } // close connection ConnectionTools.close(rset, stmt, conn); } }
发表评论
-
ubuntu 里安装 db2
2011-04-11 16:17 5300# 下载 http://www-01.ibm.com ... -
几个小算法题
2011-04-03 13:40 1145/** * 数字三角 * 当 n == 7 时输 ... -
获取 SkyDrive 的文件外链固定地址
2011-04-03 11:47 1461javascript: var id = window.se ... -
常用知识记录
2011-04-02 17:25 1632sql 部分 1. 查询已创建的数据库 // ... -
Java 与 C++ 在表达式运算上的一点异同
2010-12-25 00:24 12931. java public class Main{ ... -
SWFUpload+commons-fileupload 上传文件
2010-12-17 19:20 11012说明:使用SWFUpload 上传文件,可在客户端校验文件大小 ... -
在 ubuntu 下搭建 ftp 服务端 [ vsftpd ]
2010-11-16 20:11 1901vsftpd 1. 安装 ftp 服务端 ... -
Tomcat 常用操作
2010-11-16 13:47 2678tomcat 常用操作 1. 安装 tomcat 1.1 ... -
在 ubuntu 下搭建 svn 服务端
2010-11-13 20:43 3010参考: http://wiki.ubunt ... -
正则表达式常用功能代码
2010-11-02 19:37 13341. 校验 /** * 校验 email * @pa ... -
三种常见的排序方法[选择,冒泡,快速]
2010-10-17 17:51 1119public class Main{ public ... -
Filter 常用代码
2010-10-12 22:50 12281. 压缩 Filter // GZIPFilter.jav ... -
log4j 常用配置代码
2010-10-12 14:35 1399Reference library: commons-log ... -
计算组合数并输出
2010-09-14 09:35 5615问题描述:计算一组数据的组合数并输出 例如:输入1,2,3 ... -
native2ascii的 java实现
2010-09-13 13:49 3893描述:简单模拟JDK自带的 native2ascii.exe ... -
计算全排列
2010-09-13 09:04 1606问题描述:计算一组数 ... -
Java常用功能代码
2010-06-10 14:33 59101. 屏幕截图 public static ... -
一个关于组合数的问题
2010-05-03 20:09 11811. 题目来源 未解之谜俱 ... -
Java常用功能代码[ 2 ]
2010-04-27 17:35 14091. 加载所有 jar 包中同名的配置文件 /** * ... -
程序员学习之路
2010-04-14 20:59 14991. JavaScript 1.1 全方位、多角度学习Jav ...
相关推荐
apache commons dbcp api_zh
3. **commons-pool.jar**:Apache Commons Pool是对象池化的实现,DBCP使用这个库来管理数据库连接的生命周期,确保连接的有效利用和回收。 加载这些库到工程的方式因开发环境而异,以下是一些常见方法: - **IDE...
Apache Commons DBCP(Database Connection Pool)是Java中一个广泛使用的数据库连接池库,它提供了数据源(DataSource)实现,帮助应用高效管理数据库连接。在处理`org.apache.commons.dbcp.BasicDataSource`时,...
总之,Apache Commons DBCP是Java应用中实现高效数据库连接管理的重要工具,通过合理配置和使用,能够显著提升系统的运行效率和资源利用率。开发者应当熟练掌握其使用方法和特性,以便在实际项目中得心应手。
Apache Commons DBCP(Database Connection Pool)是Java开发中常用的一个数据库连接池组件,它属于Apache Commons项目的一部分。DBCP提供了数据库连接池的功能,能够有效地管理和复用数据库连接,提高应用性能并...
6. **与其他连接池的比较**:简述DBCP与C3P0、HikariCP、Druid等其他流行的Java数据库连接池的差异和选择依据。 7. **最佳实践**:提供在实际项目中使用DBCP的最佳实践,包括如何处理并发问题,以及在不同场景下...
Apache Commons DBCP与MySQL数据库配合使用时,需要确保JDBC驱动也已添加到项目中。同时,DBCP支持其他类型的数据库,只需更换相应的JDBC驱动并调整连接URL即可。 总的来说,Apache Commons DBCP以其简洁的API、...
在这个特定的错误中,我们看到的是`org.apache.commons.dbcp.BasicDataSource`,这是Apache Commons DBCP库中的一个类,用于管理数据库连接池。这个异常通常意味着在应用的类路径(ClassPath)中没有包含DBCP的jar...
Apache Commons DBCP(数据库连接池)和Apache Commons Pool是两个在Java开发中广泛使用的开源库,主要用于管理和优化数据库连接的使用。这两个组件是高效、可靠的数据库操作背后的关键技术。 Apache Commons Pool...
总之,Apache Commons DBCP是一个强大的数据库连接池组件,通过合理配置和使用,能显著提升Java应用程序的数据库访问性能。在实际项目中,可以根据具体需求选择集成到Spring、iBatis或Hibernate等框架中,实现更高效...
与Apache Commons DBCP的使用有关的问题应张贴到。 在哪里可以获得最新版本? 您可以从我们的下载源代码和二进制文件。 或者,您可以从中央Maven存储库中提取它: < groupId>org.apache.commons < artifactId>...
标题"commons-dbcp jar包"指的是Apache Commons DBCP库的Java归档(JAR)文件。这个库是Spring框架在进行数据库连接管理时的一个常用组件,尤其是在开发基于Java的企业级应用时。"spring开发的必备jar包"表明了在...
Apache Commons DBCP (Database Connection Pool) 是一个用于管理数据库连接池的开源组件,它基于Apache Commons Pool库。这个组件的主要目标是为Java应用程序提供高效、可配置的数据库连接池服务,以优化数据库资源...
总的来说,Apache Commons DBCP是Java开发中一个强大的数据库连接池工具,通过`BasicDataSource`类,开发者可以高效地管理和使用数据库连接,提高应用程序的性能。了解并掌握其工作原理和配置方式,对于优化Java应用...
在实际应用中,Apache Commons DBCP常与Spring框架结合使用,通过Spring的DataSource接口进行数据源管理,简化了数据库连接池的配置和管理。 总之,Apache Commons DBCP是一个强大且灵活的数据库连接池解决方案,...
Apache Jakarta Commons DBCP supports JDK 1.3 (JDBC 2.0) and JDK 1.4-1.5 (JDBC 3.0). JDK 1.6 (JDBC 4.0)
总之,Apache Commons DBCP是Java开发中常用的数据连接池解决方案,通过与其他Apache Commons库和流行框架如Spring和Hibernate的集成,为开发者提供了高效、灵活的数据库连接管理能力。理解和熟练使用这些库可以极大...
然而,对于初学者来说,遇到错误是常有的事,比如“java.lang.ClassNotFoundException: org.apache.commons.dbcp.BasicDataSource”。这个异常表明在运行时,系统无法找到指定的类,即Apache Commons DBCP的...
同时,DBCP可以与其他Apache Commons库(如Commons Pool)配合使用,以提供更全面的数据管理服务。 总的来说,Apache Commons DBCP是一个强大而灵活的数据库连接池解决方案,广泛应用于各种Java应用程序,尤其是...