2

假设我有一个最后会执行的 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:我在这里发现了一个类似的问题

4

2 回答 2

3

@Alper 很赚钱。

他们更改了驱动程序并添加了一个连接属性 GET_COLUMN_LABEL_FOR_NAME,您需要将其设置为“true”。我以为它只适用于resultSetMetaData,但显然不是那么多......

这很奇怪,但试试看。

Sybooks中的参考资料

Sybase 新闻组文章

于 2012-08-10T18:47:03.430 回答
1

我不知道它是否相关,但在 MySQL 中有一个类似的问题,您可以通过添加?useOldAliasMetadataBehavior=true到连接字符串的末尾来避免。检查此链接以获取详细信息

同一案例的官方解释链接:这里说,在 5.0.x 版本之前,默认值被设置为,true 但在 5.1 版本之后,默认值被设置false您还可以在此处检查配置字符串的其他参数

于 2012-08-10T16:57:50.710 回答