Java中的动态数据库连接

伊普斯塔塔(Ipsita Tah)

我有2个不同的数据库,一个是MYSQL,另一个是Oracle。每个数据库都有1个具有不同名称和不同列名称的表,现在我必须在单个Java应用程序的每个数据库上执行一些数据库操作。假设对于MySQL数据库,我有Emp表, Id,Name,Dept列以及对于Oracle db我有带有StudentName和StudentDept的Student表。现在不更改代码如何管理2个dbs?如果我在属性文件中提及所有与db连接相关的数据(连接url,用户名,密码)但是要执行查询,我必须在代码中提及表名和列名。如何在不更改代码的情况下动态管理它,以便将来添加具有不同表名和列名的新数据库时,我只能在其中添加新的属性文件,无需触摸代码。请提出建议。

阿伯

这可能不是最漂亮的,但是这样做的一种方法是:

  1. 在应用程序启动时,解析属性文件以获取所有数据库连接。根据需要存储这些...连接池列表,单个连接列表,连接字符串列表等...都没关系。
  2. 运行预定义的存储过程或选择查询以从步骤1中找到的每个数据库中检索所有表名。在sybase中,您可以使用

    select name from sysobjects where type = 'U'

  3. 构建一个Map,其中键是表名,值是数据库名称,连接,连接字符串,或用于从结果集2中管理数据库连接的任何内容。可以传递给您的DB连接管理器以标识其应连接到哪个数据库的所有内容都将作为值。

  4. 在代码中,当传递表名时,在映射中查找所需的数据库
  5. 在您在步骤3中创建的映射中对返回的数据库信息执行查询

只要每个数据库中的表都不同,该表便会起作用。设置完成后,可以将新的DB添加到属性文件中,并且可以在应用程序重新启动时刷新缓存。但是,如果将新表/列发送给代码,那么如何在不更改任何代码的情况下传递这些新表/列?

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章