我正在使用以下驱动程序连接到 AS400 系统。
“jdbc:as400://system-name/default-schema;properties”</p>
我有一个要求,我必须处理多个模式。
由于需要在 JDBC URL 中提及架构名称,我是否需要为我尝试连接的每个架构打开单独的连接池?
目前有两个连接池用于指向相同数据库属性的两个不同模式。
有没有其他方法可以通过单个连接处理多个模式。
我正在使用以下驱动程序连接到 AS400 系统。
“jdbc:as400://system-name/default-schema;properties”</p>
我有一个要求,我必须处理多个模式。
由于需要在 JDBC URL 中提及架构名称,我是否需要为我尝试连接的每个架构打开单独的连接池?
目前有两个连接池用于指向相同数据库属性的两个不同模式。
有没有其他方法可以通过单个连接处理多个模式。
模式通常被称为 IBM i (AS/400) 上的库。
您可以使用单个数据库连接并使用schema.table
默认 SQL 命名约定或schema/table
系统命名约定来限定表名。
请参阅工具箱程序员指南的IBM Toolbox for Java JDBC 属性部分中的“命名”属性以及SQL 编程指南中的SQL 和系统命名约定主题以获取更多信息。
通过使用“系统命名”设置,您的会话可以利用每个作业具有的“库列表”属性。它是系统在解析不合格对象的位置时搜索的方案列表。这个概念类似于 Windows 或 Linux 中的路径概念。
除了@JamesA 提供的链接之外,还请阅读 Birgitta Hauser 的两部分文章和关于不合格名称的 SQL 参考。
通常认为最佳实践是使用会话(即作业)库列表,而不是静态硬编码模式名称。我建议你遵循这种做法。虽然术语 schema 和 library 本质上是同义词,但我使用 IBM i 命令 CHGCURLIB,而不是 SET CURRENT SCHEMA,因为该命令不限制 SQL 关于库列表的行为。但我从 Birgitta 的文章中了解到,SET CURRENT SCHEMA 完全阻止了库列表的使用。当前库成为您的库列表(的用户部分)上的第一个库。