• 締切済み

JavaBeansにDBの値を格納

JavaBeansにDBの値を格納したいのですがやり方がよくわかりません。 どなたかわかる方教えていただけないでしょうか? ちなみにこんなやり方でやってみました。 DAOは int i = 0; while(rs.next()){    jb.setId(i,rs.getString("syouhinid"));    i++; } JavaBeansは private String[] id = null; public void setId(int i, String val){ this.id[i] = val; } public String getId(int i){ return id[i]; } こんな感じです。 部分的ですがこんな感じです。 ソースコードを全部乗せると長くなるので、全部乗せられませんが、 いまいちJavaBeansにDBの値を格納するやり方がわからないので 皆さん色々教えてください。宜しく御願い致します。

  • Java
  • 回答数2
  • ありがとう数1

みんなの回答

noname#147388
noname#147388
回答No.2

IndexOutOfBoundsException だな(・q・ 自動追加リストを使いましょう。

noname#147388
noname#147388
回答No.1

エスパー的余地で NPE で落ちてると予想。 String[] id = null で入れ物つくってないから NPE でおちてるだけじゃね?

iris0625
質問者

お礼

確かにその通りです。ありがとうございます。 でも、DBの値って増えたり、減ったりするから配列も可変じゃないと駄目ですよね? そういう場合ってArrayListを使えばいいんですか? ArrayListを使ってみたのですがやっぱり上手くいきません。 内容はJavaBeansが ArrayList<String[]> syouhin = new ArrayList<String[]>(); public void setSyuouhin(ArrayList<String[]> val){ this.syouhin = val; } public ArrayList<String[]> getSyouhin(){ return syouhin; } public void setMenu(String syouhinid, String category, String name, String money){ String[] menu = {syouhinid,category,name,money}; syouhin.add(menu); } public String[] getMenu(int i){ return syouhin.get(i); } で DAOが syodb.JavaBeans jb = new syodb.JavaBeans(); while(rs.next()){   String syouhinid = rs.getString("syouhinid");   String category =rs.getString("categoryid");   String name =rs.getString("name");   String money =rs.getString("money");   jb.setMenu(syouhinid, category , name, money ); } です。 これでも上手く格納できませんでした。 後、JavaBeansに格納した値が上手く呼び出せません。 JavaBeansで private String categoryid = new String(); public void setCategoryId(String val){ this.categoryid = val; } public String getCategoryId(){ return categoryid; } と書いて Controllerで syodb.JavaBeans jb = new syodb.JavaBeans(); jb.setCategoryId(category); とし、 Modelで syodb.JavaBeans jb = new syodb.JavaBeans(); String categoryid = jb.getCategoryId(); というふうに書いたのですが上手く呼び出せません。 多分、private String categoryidで引っかかっているのかなと 思っているのですが、原因も解決方法もよくわかりません。 よろしければこれも教えて頂けないでしょうか? 自分でも色々調べてるのですがどうしても解決できないので どうか宜しく御願い致します。

関連するQ&A

  • JavaBeansの配列の値取得方法について

    いつもお世話になっております。 JavaBeansで値を計算し、多次元配列に格納しています。 それをjsp側で受け取る方法がどうしてもわからずに困っています。 ちなみにサーブレットは使用していません。 [JavaBeans:]                ・                ・                ・ public class FallPersonSQL { public int check[][] = new int[7][4]; public int[][] getCheck(){                (略) return check; } } ******************************************************** [jsp:]                ・                ・                ・  <input type="text" value="<jsp:getProperty name="fallperson" property="check" />" />                ・                ・                ・ これだけですと、[[I@1fc7299 や [[I@198c113 と更新するたびに値が変わり表示されます。 ・Beanの取得の宣言方法が根本的に違っているのでしょうか? ・いったんjsp側で配列に格納し直さなければならないのでしょうか? ・Beanの作成時になにか行わなければならないのでしょうか? どなたがご教授のほどよろしくお願いいたします。

    • ベストアンサー
    • Java
  • JSPとJavaBeansについて

    JSPとJavaBeansを用いて情報を共有したいと考えています。 値を取得した後に配列に入れています。 ArrayList list = new ArrayList(); while(rs.next()){ int op = rs.getInt("op"); list.add(new Integer(op)); } int[] in = new int[list.size()]; for (int i = 0; i < list.size(); i++) { in[i] = ((Integer)list.get(i)).intValue(); この後に、in[i]の要素をBeansに送り、別のJSPでその値を使いたいと考えています。 ただ、Beansで配列のデータを扱う場合にはどのようにすれば宜しいのでしょうか? アドバイスを頂けると助かります。 宜しくお願いします。

  • JSPでDBからデータ読み込みブラウザーで10件ずつ表示させたい。

    JSPでDBからデータを表示させる事ができました、これをブラウザーで10件ずつ表示させ、次へ→、←戻る又はページ数表示で移動させたいのですが、PHPとかでは あったのですがJAVA初心者にはわかりません。 誰か教えてください、お願いします。 <%@page import="java.sql.*,MyDatabase.MyDBAccess" contentType="text/html;charset=Shift_JIS"%> <% String sel=request.getParameter("sel"); sel=new String(sel.getBytes("8859_1"),"Shift_JIS");//selectしたカテゴリーname MyDBAccess db =new MyDBAccess(); db.open(); //String str; //str=sel; ResultSet rs = db.getResultSet("select * from "+sel+""); String tableHTML ="<table border=1>"; tableHTML +="<tr bgcolor=\"#ff9933\">" +"<td><font color=\"white\">商品ID</font></td>" +"<td><font color=\"white\">画像</font></td>" +"<td><font color=\"white\">商品名</font></td>" +"<td><font color=\"white\">数量</font></td>" +"<td><font color=\"white\">タイトル</font></td>" +"<td><font color=\"white\">価格</font></td>" +"<td><font color=\"white\">説明</font></td>"; int n=0; while(rs.next()){ //int id=rs.getInt("id"); String id=rs.getString("id"); String name=rs.getString("name"); String sum=rs.getString("sum"); String price=rs.getString("price"); String title=rs.getString("title"); String detail=rs.getString("detail"); String ima=rs.getString("imagelink"); //ima=new String(ima.getBytes("8859_1"),"Shift_JIS"); String imag=("../image/"+ima); tableHTML +="<tr><td align=\"right\">"+id+"</td>" +"<td><img src="+imag+" whdth=\"120\" height=\"60\"></td>" +"<td>"+name+"</td>" +"<td>"+sum+"</td>" +"<td>"+title+"</td>" +"<td>"+price+"</td>" +"<td>"+detail+"</td></tr>"; n++; } tableHTML +="</table>"; db.close(); %> <html> <head> <title>商品在庫情報</title> </head> <body> <h1><%= sel %>の在庫一覧</h1> <%=tableHTML %> </body> </html>

  • DBを10件毎に表示ページング処理方法

    度重なる質問申し訳ありません。 現在DB操作について学んでいるJava独学者です。 下記のようなソースで一覧表示画面を作成してみました。 この一覧画面をページング処理したいのですが、その方法がよく分からず頭を抱えています。 期待する結果は以下の通りです。 (1)DBの内容を10件ごとに表示し、「Back」「Next」のリンクを使って画面を移動する。 (2)次(もしくは前)に表示する10件がない場合は上記のリンクを非表示としたい。 ※ちなみにDBはPostgreSQLを使用しております。 下記はソースの一部です。 **Srvlet** if(button != null && button.equals("一覧")){ target = "/list.jsp"; CList cList = new CList(); List list = cList.list(); request.setAttribute("SELECT", list); } **JSP** <%@page contentType="text/html; charset=Windows-31J" %> <%@page import="java.util.*" %> <%@page import="XXXX.bean.Bean" %> <%@page import="XXXX.service.CList" %> <%@page import="XXXX.service.Search" %> <jsp:useBean id="SELECT" class="java.util.ArrayList" scope="request"/> <HTML> <HEAD> //省略// </HEAD> <BODY> <BR> <% ArrayList array = (ArrayList)request.getAttribute("SELECT"); for(int i=0 ; i<array.size() ; i++){ Bean bean = (Bean)array.get(i); %> <TR> <TD><INPUT type="radio" name="radio" value="<%= (int)bean.getId() %>" <%= bean == array.get(0) ? "checked" : ""%>></TD> <TD><%= (int)bean.getId() %></TD> <TD><%= (String)bean.getName() %></TD> <TD><%= (String)bean.getTel() %></TD> </TR> <%} %> </TABLE> </TD> </TR> </TABLE> </FORM> </DIV> <a href=""> <font color="#0000ff"><b>Back</b></font></a> <a href=""> <font color="#0000ff"><b>Next</b></font></a> **CList.java** DBAccess db = new DBAccess(); db.open(); String SQL = "SELECT*FROM LIST ORDER BY ID ASC;"; db.setSql(SQL); ResultSet rs=db.select(); List list = new ArrayList(); while (rs.next()) { Bean bean = new Bean(); bean.setId(rs.getInt("ID"));                   bean.setName(rs.getString("NAME")); bean.setTel(rs.getString("TEL")); list.add(bean); } rs.close(); db.close(); return list; } } 色々調べた結果、SQL文を使う方法とArrayList等に格納する方法があるようですが、 どちらも良く理解出来ませんでした。 勉強不足で申し訳ありませんが、ご教授お願いいたします。

  • クラスの設計の問題

    今C++でクラスの設計をしています。 どう設計すれば、いいか分からないので、しっている方に教えていただきたいですが。 class A{ private: int id; public: int getId(); void setId(); }; class B{ private: int id; public: int getId(); void setId(); } class C{ private: int id; public: int getId(); void setId(); } この三つのクラスが、共通な機能があります。また、実装も同じで、 継承を利用して、どう設計すれば、いいですか? よろしくお願いします。

  • beanの利用

    これは、ブラウザから、Parameterを受け取り、DBで検索内容を取得してくると言う、内容です。 一部省略しますが、下記に表示します。 /*GooServlet*/ public class KensakuServlet5 extends HttpServlet{ public void doPost (HttpServletRequest req,HttpServletResponse res) throws ServletException, IOException { dbAccess dbaccess = new dbAccess(); String id = req.getParameter("id"); dbaccess.setId(id); dbaccess.Execute(); req.setAttribute("dba",dbaccess); RequestDispatcherrd=sc.getRequestDispatcher ("/Hyouji.jsp"); rd.forward(req,res); /*dbAccess*/ public class dbAccesss { private String id = getId(); public void Execute(){ /*DB接続処理*/ while(resultset.next()){ id = resultset.getString("id"); } public void setId(String val){id = val;} public String getId(){return(id);} } /*Hyouji.jsp*/ <%@ page contentType="text/html;charset=Shift_JIS" %> <jsp:useBean id='dba'scope='request'class='dbAccess'/> <html> <body> <%=dba.getId()%> </body> </html> です。少し、省略しましたが・・。 で、今回の質問は、ファイルへの書き出しを加える事なのです。 ファイルへの書き出しは、下記のような流れです。 FileOutputStream fos = new FileOutputStream("c:\\inetpub\\hello.text"); OutputStreamWriter osw = new OutputStreamWriter(fos , "Shift_JIS"); BufferedWriter bw = new BufferedWriter(osw); bw.write(goo); } このような処理を、beanで取得した値(dba.getId())を、ファイルに書き出したいのです。 説明が下手ですみませんが、ご助言よろしくお願いします。

    • ベストアンサー
    • Java
  • java strust 動的にDBのデータをJSP画面で表示する 方法

    --エラー内容 致命的: サーブレット action のServlet.service()が例外を投げました javax.servlet.jsp.JspException: Bean array のプロパティ dBBookTitle に対するゲッターメソッドがありません --JSPソース-- <logic:notEmpty property="bookId" name="RETURNSCREEN"> <logic:iterate id="array" name="RETURNSCREEN" property="bookId" > <bean:write name="array" property="dBBookId"/> </logic:iterate> </logic:notEmpty> --Javaアクション-- ReturnScreenForm rsf = ( ReturnScreenForm ) form ; ReturnScreenFormDB rsfd = new ReturnScreenFormDB( ) ; // = ( ReturnScreenFormDB ) form ; //ArrayListクラスは大きさが決まっていない配列となる,その為動的にオブジェクト配列を宣言できる ArrayList<ReturnScreenFormDB> array = new ArrayList<ReturnScreenFormDB>( ) ; //DB接続処理の呼び出し DatabaseAccess.Open( ); rs = DatabaseAccess.executeQueryMethod( SQL_CODE ) ; String stmember_id ; //DBデータ(member_id )取得して格納する受け皿 String ststatus ; //DBデータ(status )を取得して格納する受け皿 String stbook_id ; //DBデータ(book_id )を取得して格納する受け皿 String stbook_title ; //DBデータ(book_title )を取得して格納する受け皿 int flg_Retrieval = 0 ; int CountNo = 0; //検索された行数文ループ while( rs.next( ) ) { flg_Retrieval = 1 ; stmember_id = rs.getString("member_id"); //DBのmember_idを格納 ststatus = rs.getString("status"); //DBのmember_idを格納 stbook_id = rs.getString("book_id"); //DBのmember_family_nameを格納 stbook_title = rs.getString("book_title"); //DBのmember_family_name_kanaを格納 //セッターに取得データをセットする rsfd.setDBBookId( stbook_id ) ; rsfd.setDBBookTitle( stbook_title) ; array.add( rsfd ); rsf.setBookId( array ); } //END while( rs.next( ) ) --JSP画面Bean-- private String memberId; // ="0003"; //会員ID private ArrayList<ReturnScreenFormDB> bookId; // ="0041"; //本ID private ArrayList<ReturnScreenForm> bookTitle; // = "御徒町"; //本タイトル //セット本ID public void setBookId( ArrayList<ReturnScreenFormDB> array ) { this.bookId = array ; } //ゲット本ID public ArrayList<ReturnScreenFormDB> getBookId( ) { return this.bookId ; } //セット本タイトル public void setBookTitle( ArrayList<ReturnScreenForm> bookTitle ) { this.bookTitle = bookTitle ; } //ゲット本タイトル public ArrayList<ReturnScreenForm> getBookTitle( ) { return bookTitle ; } //セット会員ID public String getMemberId( ) { return memberId ; } //ゲット会員ID public void setMemberId( String memberId ) { this.memberId = memberId; } --JSPDBBean-- private String dbbookTitle; // = "御徒町"; //DB本タイトル private String dbbookId; // ="0041"; //DB本ID //セット本タイトル public void setDBBookTitle( String dbbookTitle ) { this.dbbookTitle = dbbookTitle ; } //ゲット本タイトル public String getDBBookTitle( ) { return this.dbbookTitle ; } //セット本ID public void setDBBookId( String dbbookId ) { this.dbbookId = dbbookId ; } //ゲット本ID public String getDBBookId( ) { return this.dbbookId ; } --struts-config.xml-- <form-beans> <form-bean name="RETURNSCREEN" type="rentalPackage.ReturnScreenForm"> </form-bean> </form-beans> <action path="/Return" type="rentalPackage.ReturnScreenAction" name="RETURNSCREEN" scope="request" parameter="submitPropertyReturnScreen" validate="false"> <forward name="successReturnScreen" path="/ReturnScreen.jsp"/> </action> --質問-- JSPの画面表示はできました。 しかし、番号を入力後検索をDBにかけると エラーが出力されます。Beanのプロパティに対するゲッターエラーと感じています。 大変申し訳ありませんが本当に助けてほしいです。 よろしくお願いします。

    • ベストアンサー
    • Java
  • セッションを使ったint型の値の保持

    こんにちは。 少し文が長いですがよろしくお願いします。 AccessのDBから取得したint型の値を、セッションを使って保持したいのですが while(rs.next()){ String name = rs.getString("NAME"); int value = rs.getInt("VALUE"); HttpSession session1 = req.getSession(true); HttpSession session2 = req.getSession(true); session1.setAttribute("Name", name); session2.setAttribute("Value", value); dispatcher2.include(req, res); } のコードの session2.setAttribute("Value", value); でコンパイルエラー DBAccess.java [37:1] javax.servlet.ServletRequest の setAttribute(java.lang.String,java.lang.Object) は (java.lang.String,int) に適用できません。 がでてうまくいきません。 セッションを使ってint型の値の保持を行うにはどうすればよいのでしょうか?

    • ベストアンサー
    • Java
  • getStringの値がNULLの時の処理

    DB:SQL Server 2005 JDBCを使ってデータベースへアクセスし、SQL発行して結果をResultsetに格納、getStringで各項目の値を取得するところまでは確認できています。 外部結合したテーブルを参照していおり、getString()でnullを取得した場合にjava.lang.NullPointerExceptionが返ってエラーとなってしまいます。 回避策はあるのでしょうか? 抜粋したソースを下記に記します。 -- test.jsp -- <% ResultSet rs = db.executeQuery(sql); while(rs.next()){ String disp_object = rs.getString("object"); if(disp_object == null) disp_object="---"; } %> <tr>Object</tr> <tr><%=disp_object%></tr>

    • ベストアンサー
    • Java
  • ループで呼び出しながら、追加クエリでテーブルに追加

    IDをループで呼び出しながら、追加クエリでテーブルに追加したいのですが、 値が入りません。 エラーなく動くのですが、テーブルに値が入っていないのです。 何がたりないのでしょうか? ――――――――――――― Public Sub CYUSYUTU_SEIKYUID2() Dim CYUSYUTU_SEIKYUID As String Dim recCount As Long recCount = DCount("*", "作業用請求先ID") Dim ID As String Dim DB As DAO.Database Dim RS As DAO.Recordset Dim i As Integer Dim strSQL As String Set DB = CurrentDb Set RS = DB.OpenRecordset("作業用請求先ID") RS.MoveFirst Do Until RS.EOF RS.Edit For i = 1 To recCount CYUSYUTU_SEIKYUID = RS.Fields("請求先ID(13)").Value DoCmd.RunSQL _ "INSERT INTO [作業用_▲入金DB] SELECT * FROM ▲入金 WHERE ▲入金.請求先ID='& CYUSYUTU_SEIKYUID &';" Next i RS.Update RS.MoveNext Loop RS.Close: Set RS = Nothing DB.Close: Set DB = Nothing End Sub