请帮助我......
DB1,DB2,DB3,DB4,DB5等数据库很少....
每个数据库都有相同的表T1,T2,T3 ..... Tn。 (每个表都有相同的列C1,C2,C3 ...... Cn ......但这些表中的数据不同)
要求: * 查询: *从T1内部连接T2选择C1,C2,C3,T1.C4 = T2.C4
所有数据库的查询都相同。
第一步是为数据库DB1,DB2,DB3,DB4,DB5创建下拉菜单
然后选择一个或多个数据库,之后应针对选定的数据库或数据库运行查询。
我应该选择哪些来源以及如何为他们创建数据集?
答案 0 :(得分:0)
你可以尝试一下:
将所有数据源映射到部署描述符(web.xml / web-config.xml)
通过将密钥作为下拉值传递来根据请求获取数据源
获得正确的数据源后,获取连接并执行查询
答案 1 :(得分:0)
创建一个名为SelectedDatabase的参数。
对其中可用数据库的值进行硬编码。
将查询表达式更改为:
="select C1, C2, C3 from " & Parameters!SelectedDatabase.Value & ".T1 inner join " & Parameters!SelectedDatabase.Value & ".T2 on T1.C4 = T2.C4"
这是动态查询的示例 - 您可以找到更多here。
请注意,如果用户可以直接输入将在动态查询中使用的值,则您将打开代码,风险为SQL injection attacks(强制性XKCD参考here)。这就是你应该对可用值进行硬编码的原因(如果可能的话)。