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はお金を稼いでいた。

彼らはドライバーを変更し、「true」に設定する必要のある接続プロパティGET_COLUMN_LABEL_FOR_NAMEを追加しました。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 に答える