假设我有一个SP,最后会SELECT a as b FROM example_table
。
当我这样做时
// Some magical code goes here
ResultSet rs = callableStatement.executeQuery();
while(rs.next()) {
System.out.printLn(rs.getString("b"));
}
// Some magical code goes here
我收到错误,告诉我该列不存在,但是当我更改rs.getString("a")
的代码时,它将正确执行。这似乎是因为getString(String)
按名称而不是别名/标签来提取列。
如何告诉ResultSet按标签/别名获取列,而不是通过名称来获取。
PS:我发现了一个类似的问题here.
答案 0 :(得分:3)
@Alper在钱上。
他们更改了驱动程序并添加了一个您需要设置为“true”的连接属性GET_COLUMN_LABEL_FOR_NAME。我以为它只适用于resultSetMetaData,但显然不是那么多......
这很奇怪,但试试吧。
Sybooks中的参考
Sybase新闻组Article
答案 1 :(得分:1)
我不知道它是否相关但是在MySQL中存在类似的问题,您可以通过将?useOldAliasMetadataBehavior=true
添加到连接字符串的末尾来避免。 Check this link for details
The link of an official explanation for the same case:这里说,在版本5.0.x之前,默认值设置为true
,但在版本5.1之后,默认值设置为false
。您还可以检查配置字符串here