我有2个不同的数据库,一个是MYSQL,另一个是Oracle。每个数据库都有1个具有不同名称和不同列名称的表,现在我必须在单个Java应用程序的每个数据库上执行一些数据库操作。假设对于MySQL数据库,我有Emp表, Id,Name,Dept列以及对于Oracle db我有带有StudentName和StudentDept的Student表。现在不更改代码如何管理2个dbs?如果我在属性文件中提及所有与db连接相关的数据(连接url,用户名,密码)但是要执行查询,我必须在代码中提及表名和列名。如何在不更改代码的情况下动态管理它,以便将来添加具有不同表名和列名的新数据库时,我只能在其中添加新的属性文件,无需触摸代码。请提出建议。
这可能不是最漂亮的,但是这样做的一种方法是:
运行预定义的存储过程或选择查询以从步骤1中找到的每个数据库中检索所有表名。在sybase中,您可以使用
select name from sysobjects where type = 'U'
构建一个Map,其中键是表名,值是数据库名称,连接,连接字符串,或用于从结果集2中管理数据库连接的任何内容。可以传递给您的DB连接管理器以标识其应连接到哪个数据库的所有内容都将作为值。
只要每个数据库中的表都不同,该表便会起作用。设置完成后,可以将新的DB添加到属性文件中,并且可以在应用程序重新启动时刷新缓存。但是,如果将新表/列发送给代码,那么如何在不更改任何代码的情况下传递这些新表/列?
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句