1

我正在使用以下驱动程序连接到 AS400 系统。

“jdbc:as400://system-name/default-schema;properties”</p>

我有一个要求,我必须处理多个模式。

由于需要在 JDBC URL 中提及架构名称,我是否需要为我尝试连接的每个架构打开单独的连接池?

目前有两个连接池用于指向相同数据库属性的两个不同模式。

有没有其他方法可以通过单个连接处理多个模式。

4

2 回答 2

3

模式通常被称为 IBM i (AS/400) 上的库。

您可以使用单个数据库连接并使用schema.table默认 SQL 命名约定或schema/table系统命名约定来限定表名。

请参阅工具箱程序员指南的IBM Toolbox for Java JDBC 属性部分中的“命名”属性以及SQL 编程指南中的SQL 和系统命名约定主题以获取更多信息。

于 2013-09-25T03:16:29.340 回答
1

通过使用“系统命名”设置,您的会话可以利用每个作业具有的“库列表”属性。它是系统在解析不合格对象的位置时搜索的方案列表。这个概念类似于 Windows 或 Linux 中的路径概念。

除了@JamesA 提供的链接之外,还请阅读 Birgitta Hauser 的两部分文章和关于不合格名称的 SQL 参考。

通常认为最佳实践是使用会话(即作业)库列表,而不是静态硬编码模式名称。我建议你遵循这种做法。虽然术语 schema 和 library 本质上是同义词,但我使用 IBM i 命令 CHGCURLIB,而不是 SET CURRENT SCHEMA,因为该命令不限制 SQL 关于库列表的行为。但我从 Birgitta 的文章中了解到,SET CURRENT SCHEMA 完全阻止了库列表的使用。当前库成为您的库列表(的用户部分)上的第一个库。

于 2013-09-26T02:45:14.310 回答