[Seasar-user:8624] Re: [S2DAO]ResultSetMetaData が取得できない

Yasuo Higa [E-MAIL ADDRESS DELETED]
2007年 6月 25日 (月) 11:10:57 JST


<[E-MAIL ADDRESS DELETED]> の、
   "[Seasar-user:8622][S2DAO]ResultSetMetaDataが取得できない" に
おいて、
   "豊田 友幸 <[E-MAIL ADDRESS DELETED]>"さんは書きました:

> 
> お世話になります。
> 先日「[S2DAO]DB より取得したデータの全項目がNULLになる」と
> いう内容にてお世話になりました。
> その後添付のようなサンプルプログラムで
> 確認を行ったのですが
> Oracle JDBCのレベルではResultSetMetaData#getColumnName()は
> 正常に取得が行えております。
> 
> 前回は、S2DAO使用のアプリにて確認を行うと
> ResultSetMetaData#getColumnName()の取得が行えておりませんでした。
> ですのでOracleのバグではという回答を頂いたのですが
> サンプルのPGではResultSetMetaData#getColumnNameが
> 取得できていますのでJDBCには問題ないように
> 思えるのですが・・・・
> 
前のメールで下記のコードで値がひろえないといわれたので、
Oracleのバグではと回答したのですが、
----------------------------------------------------------------
PreparedStatement st = con.prepareStatement("SELECT * FROM 
KRS0010M WHERE KRS0010M.UNAMEK=?");
st.setString(1, "TEST      ");
ResultSet rs = st.executeQuery();
ResultSetMetaData rsmd = rs.getMetaData();
for (int i = 0; i < rsmd.getColumnCount(); ++i) {
  System.out.println("resultSetColumnName : " + rsmd.
getColumnName(i + 1);
}
----------------------------------------------------------------

下記のコードだと値がひろえるのでしょうか。
若干SQLが違う以外は同じように見えます。

String sql = "select HNAMEJ from XXX0010M where KCODE = ?";
PreparedStatement st = conn.prepareStatement(sql);
st.setString(1, "4200");
ResultSet rs = st.executeQuery();
ResultSetMetaData rsmd = rs.getMetaData();
for (int i = 0; i < rsmd.getColumnCount(); ++i) {
 System.out.println("resultSetColumnName : " + rsmd.
getColumnName(i + 1));
  System.out.println("resultSetColumnLabel : " + rsmd.
getColumnLabel(i + 1));
}

上記二つの違いは何なのかをまずは、確認させてください。
もしかして接続文字列など前回と違っていないでしょうか。
よろしくお願いします。

--
Yasuo Higa
[E-MAIL ADDRESS DELETED]



Seasar-user メーリングリストの案内