精华帖 (0) :: 良好帖 (0) :: 新手帖 (3) :: 隐藏帖 (6)
|
|
---|---|
作者 | 正文 |
发表时间:2011-07-14
newstong1 写道
kyan54 写道
cheng888qi 写道
继承下com.mchange.v2.c3p0.ComboPooledDataSource,覆盖setUser, setPassword,自己从数据库读取不行吗?
属性文件可以自己动态创建吧? 下面代码应该可以实现你说的这种
private ComboPooledDataSource buildDataSource(Properties property) throws PropertyVetoException { ComboPooledDataSource ds = new ComboPooledDataSource(); //加载DataSource驱动 ds.setDriverClass(property.getProperty(DRIVER_CLASS)); //设置连接数据库的url ds.setJdbcUrl(property.getProperty(JDBC_URL)); //设置数据库用户名 ds.setUser(property.getProperty(USER)); //设置数据库密码 ds.setPassword(property.getProperty(PASSWORD)); //设置池的最大连接数 ds.setMaxPoolSize(Integer.parseInt(property.getProperty(MAX_POOL_SIZE))); //设置池的最小连接数 ds.setMinPoolSize(Integer.parseInt(property.getProperty(MIN_POOL_SIZE))); ds.setMaxStatements(Integer.parseInt(property.getProperty(MAX_STATEMENTS))); ds.setMaxIdleTime(Integer.parseInt(property.getProperty(MAX_IDLETIME))); ds.setInitialPoolSize(Integer.parseInt(property.getProperty(INITIAL_POOLSIZE))); ds.setCheckoutTimeout(Integer.parseInt(property.getProperty(CHECKOUT_TIMEOUT))); ds.setIdleConnectionTestPeriod(Integer.parseInt(property.getProperty(IDLECONNECTIONTESTPERIOD))); return ds; }
如果按照这样写法,我原来的super.getJdbcTemplate().queryForInt( )这种方法是不是不能用了
jdbcTemplate = new JdbcTemplate(); 我按照你们说的这种方法试了下 ,出了下面的错误: Cannot create PoolableConnectionFactory (I/O Error: SSO Failed: Native SSPI library not loaded. Check the java.library.path system property.) 是不是还有没想到的地方?
|
|
返回顶楼 | |
发表时间:2011-07-20
楼主你可以这样
List queryForList(String sql): List queryForList(String sql,Object[] args): List queryForList(String sql,Class requiredType): List queryForList(String sql, Object[] args, Class elementType): /* *示例 */ public class JdbcTemplateQuery { public static void main(String[] args)throws Exception { ComboPooledDataSource ds = new ComboPooledDataSource(); ds.setDriverClass("com.mysql.jdbc.Driver"); ds.setJdbcUrl("jdbc:mysql://localhost:3306/j2ee"); ds.setUser("root"); ds.setPassword("32147"); ds.setMaxPoolSize(40); ds.setMinPoolSize(2); ds.setMaxStatements(180); //创建一个JdbcTemplate JdbcTemplate jt = new JdbcTemplate(); //为JdbcTemplate指定DataSource jt.setDataSource(ds); //如果只需返回一个特定值,可直接查询 int count = jt.queryForInt("select count(*) from mytable"); System.out.println(count); //此处的转换实际非常简单:只支持Varchar->String的转换。 String nametmp = (String)jt.queryForObject("select name from mytable where name='wawa2'",String.class); System.out.println(nametmp); List namelist = jt.queryForList("select name from mytable"); for (Iterator it = namelist.iterator();it.hasNext(); ) { System.out.println(it.next().getClass()); } //返回系列值 List list = jt.queryForList("select * from mytable"); for (Iterator it = list.iterator();it.hasNext(); ) { System.out.println(it.next().getClass()); System.out.println((Map)it.next()); } } } |
|
返回顶楼 | |
发表时间:2011-07-21
我试下看看,感谢各位好心人回贴,哈哈
|
|
返回顶楼 | |
发表时间:2011-07-21
这样做会存在什么隐患吗??
|
|
返回顶楼 | |