

再びすみません

[code]

    public class MemberCtrl {
    
        //変数を定義する
        Connection con=null;
        PreparedStatement ps=null;
        ResultSet rs=null;
    
    
        public MemberCtrl(Connection con) {
            this.con=con;
        }
    
        public Member[] excuteSelect() throws SQLException {
             // ステートメント生成
            Statement stmt = con.createStatement();
    
            // SQLを実行する
            String sql = "SELECT * FROM T_MEMBER";
            ResultSet rs = stmt.executeQuery(sql);
    
            *// 結果行をループ
            while(rs.next()){
                // レコードの値
                int id = rs.getInt("id");
                String name = rs.getString("name");
                String email= rs.getString("email");
                //結果を表示する
                System.out.println("id:"+id+" "+"name:"+name+" "+"email:"+email);
            }
            return ;*　間違っています
    
        }
    
[/code]

そして別のクラスで結果を出力する

[code]

    public class Toi1_db {
        /**
         * @param args
         * @throws SQLException 
         */
        public static void main(String[] args) throws SQLException {
            Connection con =(new DBConnection()).getConnection();
            MemberCtrl memctrl = new MemberCtrl(con);
            Member[] mem = memctrl.excuteSelect();
    
            for(int i = 0 ; i < mem.length ; i++ ){
                //以下は出力処理
    
            }
        }
    }
    
[/code]

SQLを実行して、結果 配列Member[] として返す方法はなんですか？  
一つ目のコード 結果を配列として返す  
二つ目のクラスで 出力処理を行う  
どなたがお分かりですか？


CC BY-SA 3.0
2015-07-29T06:38:50.810
12792
2015-08-29T14:56:22.357
2015-07-30T02:04:15.167
3516
10601
question
java
Java mysql から情報をselect取得して　配列として返す方法


まず、public Member[] excuteSelect() メソッドがMemberクラスの配列を返すと宣言されていますね。

Toi1_dbクラスのmain()メソッドでも、MemberCtrlのexecuteSelectの実行結果を受け取るよう記載していますので、呼び出し方は問題ないようです。

問題となっているのは、データベースに対してSELECT文を実行した結果がResultSetに入っていますので、これを取得した件数分だけループして、Memberクラスに入れるところでしょうか。

nameとemailなど、ResultSetから１行の項目を取り出していますので、その内容をMemberに格納し、繰り返して取り出した結果をMemberの配列であるMember[]に入れて返す必要があります。

Member１つ１つを配列に格納しなければなりませんし、あらかじめ取得した件数分の配列を用意しなければいけないので、できれば動的に値を格納できるjava.util.ArrayListを使ってMemberを格納する方法が良いと思います。

なのでMember[]となっている箇所を、Listとするのが、まずは良いでしょう。

ちなみにですが、Memberクラスは、id,name,emailのフィールドはありますよね？

参考になれば幸いです。


CC BY-SA 3.0
2015-07-30T12:03:41.130
12838
2015-07-30T12:03:41.130
5778
12792
answer