问题陈述:
使用java在查询的select子句(列名,类型)中获取列的架构的最佳方法是什么?
选项
一个选项是运行查询,然后使用ResultSetMetadata获取列名和类型,但我不确定这是否是最佳的,因为它将运行整个查询。即使使用limit子句,它仍然可以在结果有限之前运行整个查询。有和没有限制条款的查询之间会有任何性能差异吗?
另一个选项是link,即为查询提供错误条件并使用ResultSetMetaData。
例如,从A中选择*,其中1 = 0;
任何其他更好的方法或选项2在所有情况下都是最优的吗?即,我可能有一个连接多个表的查询,当我在最后添加一个错误条件时,选项2在这种情况下是否有意义?
注意:需要DB2和SqlServer的解决方案。
编辑: 此外,提取架构的顺序是否与数据中的列顺序匹配? 即如果我从A做一个select *,让我说我得到5列。当我使用相同的查询使用ResultSetMetadata获取架构时,此订单是否匹配?