NutzCN Logo
问答 动态的连接多个数据库
发布于 2962天前 作者 efraiser 2050 次浏览 复制 上一个帖子 下一个帖子
标签:

我想在WEB的前端页面上输入数据库地址等相关数据库连接信息,然后连接上数据库这个可以实现吗?怎么实现?

10 回复

你直接 NEW 一个dataSource不就完了 然后把新的扔给DAO

老的那个DataSource记得先执行close哦

@qq_cd48ca64 第一次做这方面的,有例子学习下吗

@wendal 我想拿我本地数据库里的数据和其他数据库里的数据做比较,这样是不是要老是切换数据源,运行速度会不会很慢?

方案一,直接替换:

Ioc ioc = Mvcs.getIoc();
Dao dao = ioc.get(DataSource.class);
DataSource ds = ioc.get(DataSource.class);
ds.close();
ds = new XXXXXX
dao.setDataSource(ds);

方案2, 自定义一个ProxyDataSource, 代理原本的DataSource对象,仅需要实现getConnection方法,其他方法随便实现.

Proxy proxyDs = ioc.get(ProxyDataSource.class, "dataSource");
DataSource ds = proxyDs.getDataSource();
ds.close();
ds = new XXXXXXX();
proxDs.setDataSource(ps);

? 有跑题了....

如果只是临时用一下其他数据源,何不直接生成对应的DataSource和NutDao实例,用完立马close/depose掉

@wendal 恩,只是在做一些数据校验的时候才会临时的用到其他数据库里面的数据。直接生成对应的DataSource和NutDao实例,用完立马close/depose掉这样是不是等于同时存在多个数据源?不用老是做数据源的切换

@At
@Ok("json")
public Object getConnect() throws SQLException, ClassNotFoundException{
    SimpleDataSource ds= new SimpleDataSource();
    ds.setDriverClassName("com.ibm.db2.jcc.DB2Driver");
    ds.setJdbcUrl("jdbc:db2://192.168.189.133:50000/sam");
    ds.setUsername("sam");
    ds.setPassword("sam");
    ds.getConnection();
    Dao dao = new NutDao(ds);
    return dao.fetch(SysUser.class,"admin");
}
简单测试下是可行的 谢谢大家了

@qq_11f99046 临时用的话, SimpleDataSource还是可以接受的, 如果是new其他真正的连接池, 可以考虑 DaoUp这个类

@wendal 谢谢兽总,SimpleDataSource足够处理我这边的问题了,做完再研究下DaoUp,感觉要学的东西很多啊。

添加回复
请先登陆
回到顶部