- 締切済み
Resultsetについて困っています。
Struts DBからデータを取得し、名称をコンボボックスに設定しようとしています。具体的には、一つの商品に登録してあるサイズと色をコンボボックスで表示しようとしています。 取得した値をbeanにセットしようとしているのですが、取得する値が複数ある項目が、複数ある場合について質問させて頂いております。 下記のように”SELECTDETAIL”でDBから1行 の項目の値を取得しています。列項目は"ID"と"NAME"です。 この先、"SIZE"と"color"の値をbeanにセットしようとしているます。"SELECTDETAIL"で取得するのは1行で、サイズと色は複数行なのでこの二つは"public List<Product>・・・"でbeanにセットしようと思っています。しかし、サイズと色の取得する行数は異なるので、それぞれ"public List<Product>・・・"を作った方がいいのでしょうか?お願い致します。 ---ProductはActionFormです--- private static final String SELECTDETAIL = "select * from goods_info where ID=?"; public Product getProduct(int ID) throws Exception{ Connection con = source.getConnection(); PreparedStatement pStmt = null; ResultSet rs = null; try{ pStmt = con.prepareStatement(SELECTDETAIL); pStmt.setInt(1,ID); rs = pStmt.executeQuery(); if(rs.next()){ return getProduct(rs); } }catch(SQLException ex){ throw ex; }finally{ if(rs != null){ rs.close(); } pStmt.close(); con.close(); } return null; } ---ActionFormにセット--- private Product getProduct(ResultSet rs) throws SQLException { Product pro = new Product(); pro.setGoods_info_id(rs.getInt("ID")); pro.setGoods_name(rs.getString("NAME")); return pro; }
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- Lieserl
- ベストアンサー率81% (31/38)
GoodsInfoクラス { String id; String name; } Productクラス { List<GoodsInfo> colorList; List<GoodsInfo> sizeList; String color; String size; } アクセッサは適宜作って下さい。 Struts1.3 <html:select property="color"> <html:options collection="colorList" property="id" labelProperty="name" /> </html:select> colorListとsizeListは別々に作って、それぞれ色だけ、サイズだけ入っているとします。
- kotoby2003
- ベストアンサー率15% (280/1755)
いきなり難しいことをやらずに、 プログラムの基本、Javaの基本、Strutsの基本 を順に勉強しなおされたほうがよいと思いますが・・・。 記述されているコードを見る限り、初歩が分かっていないように見受けられます。 たとえば、 pro.setGoods_info_id(rs.getInt("ID")); pro.setGoods_name(rs.getString("NAME")); の部分です。 そういうメソッドが用意されているならいいのですが・・・文面からは分かりません。 また、Javaにおいて、メソッド名に_を使うのは推奨されないです。 それと、 public List<Product> ですが、ProductはFormなんですよね?Entitiyではなくて・・・。 FormをListにセットするなんて、ナンセンスの極みです。 日本語自体が意味不明なので、まずは、ご自分がなさりたいことをゆっくり整理することをお勧めします。