动态链接mysql数据库_动态创建数据库连接

经理要求所有的取数推数接口全部封装在一个main函数中,然后打包写成bat批处理文件,但是里面的接口推数的数据库连接是不同的。同事们写的数据库连接都是公用同一个conn,每次执行哪个接口就修改数据库池的url,user和password。如果要包装成批处理文件,那么需要创建一个方法用于动态创建数据库连接。

首先,由于项目还是比较庞大的,不可能创建多个conn,然后修改代码神马的,唯一的办法就是要修改三个参数url,user和password。可是如果在数据库池java文件中将这三个参数设置为属性,然后每次调用的时候通过反射修改属性值,这样的可行性也是很差的。本来java就是面向对象的,修改属性显然就是破坏了它的封装。

其次,用try/catch捕获当视图不存在时切换数据库,这样明显三个漏洞:第一try/catch的本来目的就是捕获异常,而非做判断;第二这样速度非常的慢,显然也是不可以取;第三前提是保证每个数据库的对象是唯一的。

最后终于是在万恶的地铁上被人潮挤出了一丝思绪:配置一个数据库连接参数属性文件。

@ 在项目下创建【动态连接数据库配置文件.tex】

文本内容:jdbc:oracle:thin:@//xxx.xxx.xx.xxx:1521/orcl,user,pass,

@ 写两个方法:

1.读取文本文件的配置信息方法:String readTxtFile()

代码参考:

public static String readTxtFile() throws IOException{

String read;

bufread= new BufferedReader(new FileReader(filename));

while((read=bufread.readLine())!=null){

readStr=(readStr+read);

}

System.out.println("读取配置文件信息:"+readStr);

return readStr;

}

-------------------------------------------------------------

2.修改数据库连接配置信息的方法:replaceTxtByStr(String replaceStr)

代码参考:

public static void replaceTxtByStr(String replaceStr) throws IOException{

PrintWriter pw = new PrintWriter(new FileOutputStream(new File(path)));

pw.write(replaceStr);

pw.flush();

pw.close();

}

-----------------------------------------------------------------------------

@ 创建一个标志,用于读取不同字符串的信息

String writeABC,writeJQ,writeStr是不同数据库连接的配置信息

jdbc:oracle:thin:@//xxx.xxx.xx.xxx:1521/orcl,user,pass,

public static void writeTxtFile(String conn) throws IOException{

if(conn.equals("ABC")){

replaceTxtByStr(writeABC);

}else if(conn.equals("JQ")){

replaceTxtByStr(writeJQ);

}else if(conn.equals("0")){

replaceTxtByStr(writeStr);

}

}

---------------------------------------------------------------------

@ 而数据库池在接收参数时都是动态从文本中读取就无需用户每次手工指定了。

这样就完成了动态创建数据库的方法。

----------------------------------------------------------------------------

最后总结:

通过属性配置文件,可以实现数据库动态创建连接。

甚至是用户从前台传入的动态修改增加数据库连接都是可以通过这个方法实现的,非常灵活。

不过就是不知道读取配置文件的io操作对性能的影响有多大,我也是新手来的,要是有人有更好的方法请留言。

参与评论 您还未登录,请先 登录 后发表或查看评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:游动-白 设计师:我叫白小胖 返回首页

打赏作者

訫立史

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值