半角スペースは敵だ
昨日結構悩んでいたこと。
public xxxInfo selectByKey (int id) throws SQLException { xxxInfo entity = null; Connection conn = null; PreparedStatement ps = null; ResultSet rs = null; String strSql = null; StringBuffer sbSql = new StringBuffer(); try{ //コネクション生成 conn = this.getCon(); //SQL生成 sbSql.append(" SELECT "); sbSql.append(" ,AAA "); sbSql.append(" ,BBB "); sbSql.append(" ,CCC "); sbSql.append(" ,DDD "); sbSql.append(" FROM "); sbSql.append(" YYT_XXX_INFO "); sbSql.append(" WHERE "); sbSql.append(" ID = ? "); strSql = sbSql.toString(); //プリペアステートメント生成 ps = conn.prepareStatement(strSql); ps.setInt(1, id); rs = ps.executeQuery(); if(rs.next()) { //Entity取得 entity = new SiharaiBasyo(); entity.setGamenMeisho(rs.getString("AAA")); entity.setGamenId(rs.getInt("BBB ")); entity.setShiharaiBasho(rs.getString("CCC")); entity.setShiharaibi(rs.getInt("DDD")); } }catch(SQLException e){ e.printStackTrace(); throw e; }finally{ //クローズ処理 UtilDao.closeResultSet(rs); UtilDao.closeStatement(ps); } return entity; }
まぁこんなソース書いてたわけだけど、単純にどっかのテーブルから情報取得するだけの簡単な処理。
ただ、何故かこんなに簡単な処理なのにエラーで落ちる。しかも原因不明。
正確に言うと原因不明ではなかったんだけど、SQLExceptionやらNULLやらで落ちたりしてデバッグしてもみてもrs.next()はtrueで返ってきてるのでさらに深みへ。
で、原因は結局なんだったのかというとrs.getInt()で指定した絡む名の後ろにしれっと半角スペースがあったのが原因みたい。
半角スペース恐るべし(´・ω・`)