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