我有2个不同的数据库,一个是MYSQL,另一个是Oracle.Each有1个表,名称不同,列名不同。现在我必须从单个java应用程序对每个数据库执行一些数据库操作。对于MYSQL db我有具有列Id,Name,Dept和Oracle db的Emp表我有StudentName和StudentDept.Now的Student表而不更改代码如何管理2 dbs?如果我提到所有数据库连接相关数据(连接URL,用户名,密码)一个属性文件,但要执行查询我必须在代码中提到表名和列名。如何动态管理它而不改变代码,以便将来添加任何具有不同表名和列名的新数据库我只能添加属性文件中的新文件,无需触摸代码。请提示。
答案 0 :(得分:1)
这可能不是最漂亮的,但有一种方法可以做到这一点:
运行预定义的存储过程或选择查询以从步骤1中找到的每个数据库中检索所有表名。在sybase中,您可以使用
执行此操作 select name from sysobjects where type = 'U'
构建一个映射,其中键是表名,值是DB名称,连接,连接字符串或用于管理来自#2结果集的数据库连接的任何内容。可以传递给数据库连接管理器以识别它应连接到哪个数据库的任何内容都将作为值。
只要表格在每个数据库中都是不同的,这将起作用。设置完成后,可以将新DB添加到属性文件中,并在重新启动应用程序时刷新缓存。但是,如果要向代码发送新的表/列,那么如何在没有任何代码更改的情况下传递它们?