Java 中的动态数据库连接
Dynamic database connection in Java
我有 2 个不同的数据库,一个是 MYSQL 另一个是 Oracle.Each 有 1 个 table 具有不同的名称和不同的列 name.Now 我必须执行一些数据库操作来自单个 java application.Suppose 的每个数据库,对于 MYSQL 数据库,我有 Emp table 和列 Id、名称、部门,对于 Oracle 数据库,我有 Student table在不更改代码的情况下,StudentName 和 StudentDept.Now 如何管理 2 个数据库?如果我在属性文件中提及所有与数据库连接相关的数据(连接 url、用户名、密码),但要执行查询,我必须提及 table code.How 中的名称和列名我可以在不更改代码的情况下动态管理它,以便将来添加任何具有不同 table 名称和列名的新数据库我只能添加新的在属性文件中,无需触摸 code.Please 建议。
这可能不是最漂亮的,但有一种方法可以做到这一点:
- 在应用程序启动时,解析属性文件以获取所有数据库连接。随心所欲地存储这些...连接池列表、单个连接列表、连接字符串列表等...没关系。
运行 预定义的存储过程或 select 查询以从步骤 1 中找到的每个数据库中检索所有 table 名称。在 sybase 中,您可以使用
select name from sysobjects where type = 'U'
构建一个映射,其中键是 table 名称,值是数据库名称、连接、连接字符串或您用来管理数据库连接的任何内容#2 的结果集。任何可以传递给您的数据库连接管理器以识别它应该连接到哪个数据库的东西都将作为值。
- 在代码中,当传递table名称时,在map中查找所需的DB
- 在您在步骤 3 中创建的映射中对返回的数据库信息执行查询
只要 table 在每个数据库中都是不同的,这就可以工作。设置完成后,可以将新的数据库添加到属性文件中,并且可以通过重新启动应用程序来刷新缓存。但是,如果将新的 tables/columns 发送到代码,如何在不更改任何代码的情况下传递这些代码?
我有 2 个不同的数据库,一个是 MYSQL 另一个是 Oracle.Each 有 1 个 table 具有不同的名称和不同的列 name.Now 我必须执行一些数据库操作来自单个 java application.Suppose 的每个数据库,对于 MYSQL 数据库,我有 Emp table 和列 Id、名称、部门,对于 Oracle 数据库,我有 Student table在不更改代码的情况下,StudentName 和 StudentDept.Now 如何管理 2 个数据库?如果我在属性文件中提及所有与数据库连接相关的数据(连接 url、用户名、密码),但要执行查询,我必须提及 table code.How 中的名称和列名我可以在不更改代码的情况下动态管理它,以便将来添加任何具有不同 table 名称和列名的新数据库我只能添加新的在属性文件中,无需触摸 code.Please 建议。
这可能不是最漂亮的,但有一种方法可以做到这一点:
- 在应用程序启动时,解析属性文件以获取所有数据库连接。随心所欲地存储这些...连接池列表、单个连接列表、连接字符串列表等...没关系。
运行 预定义的存储过程或 select 查询以从步骤 1 中找到的每个数据库中检索所有 table 名称。在 sybase 中,您可以使用
select name from sysobjects where type = 'U'
构建一个映射,其中键是 table 名称,值是数据库名称、连接、连接字符串或您用来管理数据库连接的任何内容#2 的结果集。任何可以传递给您的数据库连接管理器以识别它应该连接到哪个数据库的东西都将作为值。
- 在代码中,当传递table名称时,在map中查找所需的DB
- 在您在步骤 3 中创建的映射中对返回的数据库信息执行查询
只要 table 在每个数据库中都是不同的,这就可以工作。设置完成后,可以将新的数据库添加到属性文件中,并且可以通过重新启动应用程序来刷新缓存。但是,如果将新的 tables/columns 发送到代码,如何在不更改任何代码的情况下传递这些代码?