jdbc如何从Java的ResultSet中通过别名/标签获取列?
假设我有一个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)
根据列的名称而不是别名/标签获取列
我不能通过别名来判断如何获取结果集
PS:我发现了一个类似的问题here.
# 1 楼答案
我不知道它是否相关,但在MySQL中,有一个类似的问题,可以通过在连接字符串的末尾添加
?useOldAliasMetadataBehavior=true
来避免Check this link for detailsThe link of an official explanation for the same case:这里说,直到5.0版。默认值设置为
true
,但在5.1版之后,默认值设置为false
。您还可以检查配置字符串here的其他参数# 2 楼答案
@Alper在钱上
他们更改了驱动程序,并为需要设置为“true”的名称添加了连接属性GET_COLUMN_LABEL_。我以为这只是为了结果元数据,但显然不是那么多
这很奇怪,但是试试看
在Sybooks中引用
Sybase新闻组Article