次のコードがResultSetにデータを生成しない理由を理解しようとしています。
String sql = "SELECT STUDENT FROM SCHOOL WHERE SCHOOL = ? ";
PreparedStatement prepStmt = conn.prepareStatement(sql);
prepStmt.setString(1, "Waterloo");
ResultSet rs = prepStmt.executeQuery();
一方、以下は正しく実行されます。
String sql = "SELECT STUDENT FROM SCHOOL WHERE SCHOOL = 'Waterloo' ";
PreparedStatement prepStmt = conn.prepareStatement(sql);
ResultSet rs = prepStmt.executeQuery();
SCHOOLのデータ型はCHAR(9バイト)です。setStringの代わりに、次のことも試しました。
String sql = "SELECT STUDENT FROM SCHOOL WHERE SCHOOL = ? ";
PreparedStatement prepStmt = conn.prepareStatement(sql);
String school = "Waterloo";
Reader reader = new CharArrayReader(school.toCharArray());
prepStmt.setCharacterStream(1, reader, 9);
prepStmt.setString(1, "Waterloo");
ResultSet rs = prepStmt.executeQuery();
私は次に何を調査するかについて完全に立ち往生しています。Eclipseデバッガーは、setStringまたはsetCharacterStreamの後でもSQLクエリは変更されないと言います。パラメータの設定が機能していないことが原因なのか、それともデバッガがPreparedStatementの変更を取得できないだけなのかはわかりません。
どんな助けでも大歓迎です、ありがとう!