(JAVA)複数のレコードをSQLでselectする場合
個人開発用
listとArrayListを使う。
package pg_4_02_2; import java.util.List; /**----------------------------------------------------------------------* *■■■Sample4_02_2_Sel_BusinessLogicクラス■■■ *概要:ビジネスロジック(全ユーザーの情報抽出) *----------------------------------------------------------------------**/ public class Sample4_02_2_Sel_BusinessLogic { //定数 private static String COMMA = ","; //コンマ /**----------------------------------------------------------------------* *■extractionAllメソッド *概要 :全ユーザーの情報を抽出し、コマンドライン上に表示する *引数 :なし *戻り値:なし *----------------------------------------------------------------------**/ public void extractionAll () { //------------------------------------------- //データベースへの接続を実施 //------------------------------------------- //DAOクラスをインスタンス化&データを抽出するよう依頼 Sample4_02_2_Common_DAO dao = new Sample4_02_2_Common_DAO(); List<Sample4_02_2_Common_DTO> extractedDtoList = dao.selectMemberInfoAll(); //------------------------------------------- //抽出したユーザー情報をコマンドライン上に表示 //------------------------------------------- if(extractedDtoList != null){ for(int i = 0 ; i < extractedDtoList.size() ; i++){ //1レコード分のデータを取得&加工(各カラムをコンマ綴りで結合) StringBuffer rsbuf = new StringBuffer(); rsbuf.append(extractedDtoList.get(i).getId()); rsbuf.append(COMMA); rsbuf.append(extractedDtoList.get(i).getName()); rsbuf.append(COMMA); rsbuf.append(extractedDtoList.get(i).getGender()); rsbuf.append(COMMA); rsbuf.append(extractedDtoList.get(i).getAge()); rsbuf.append(COMMA); rsbuf.append(extractedDtoList.get(i).getCourse()); //加工作成した1レコード分のデータを表示 System.out.println(rsbuf.toString()); } } else { System.out.println("[INFO]該当のユーザー情報を取得できませんでした" ) ; } } }
メインメソッド
package pg_4_02_2; /**----------------------------------------------------------------------* *■■■Sample4_02_2_Sel_Mainクラス■■■ *概要:メイン(ユーザーの情報抽出) *----------------------------------------------------------------------**/ public class Sample4_02_2_Sel_Main { public static void main (String[] args) { //ビジネスロジック(ユーザーの情報抽出)クラスのインスタンス化&メソッド起動 Sample4_02_2_Sel_BusinessLogic blSel = new Sample4_02_2_Sel_BusinessLogic(); blSel.extractionAll(); } }
package pg_4_02_2; /**----------------------------------------------------------------------* *■■■Sample4_02_2_Common_DTOクラス■■■ *概要:DTO(memberテーブル) *----------------------------------------------------------------------**/ public class Sample4_02_2_Common_DTO { //---------------------------------------------------------------- //フィールド //---------------------------------------------------------------- private int id ; //ID private String name ; //名前 private String gender ; //性別(男:M/女:F) private int age ; //年齢 private String course ; //コース //---------------------------------------------------------------- //getter/setter //---------------------------------------------------------------- //getter/setter(対象フィールド:id) public int getId() {return id;} public void setId(int id) {this.id = id;} //getter/setter(対象フィールド:name) public String getName() {return name;} public void setName(String name) {this.name = name;} //getter/setter(対象フィールド:gender) public String getGender() {return gender;} public void setGender(String gender) {this.gender = gender;} //getter/setter(対象フィールド:age) public int getAge() {return age;} public void setAge(int age) {this.age = age;} //getter/setter(対象フィールド:course) public String getCourse() {return course;} public void setCourse(String course) {this.course = course;} }
DAO
package pg_4_02_2; import java.sql.DriverManager; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.util.List; import java.util.ArrayList; /**----------------------------------------------------------------------* *■■■Sample4_02_2_Common_DAOクラス■■■ *概要:DAO(uzuz_memberテーブル) *----------------------------------------------------------------------**/ public class Sample4_02_2_Common_DAO { //------------------------------------------- //データベースへの接続情報 //------------------------------------------- //JDBCドライバの相対パス //※バージョンによって変わる可能性があります(MySQL5系の場合は「com.mysql.jdbc.Driver」) String DRIVER_NAME = "com.mysql.cj.jdbc.Driver"; //接続先のデータベース //※データベース名が「test_db」でない場合は該当の箇所を変更してください String JDBC_URL = "jdbc:mysql://localhost/test_db?characterEncoding=UTF-8&serverTimezone=JST&useSSL=false"; //接続するユーザー名 //※ユーザー名が「test_user」でない場合は該当の箇所を変更してください String USER_ID = "test_user"; //接続するユーザーのパスワード //※パスワードが「test_pass」でない場合は該当の箇所を変更してください String USER_PASS = "test_pass"; //---------------------------------------------------------------- //メソッド //---------------------------------------------------------------- /**----------------------------------------------------------------------* *■selectMemberInfoAllメソッド *概要 :「member」テーブルのレコードをすべて抽出する *引数 :なし *戻り値:抽出データ(List<Sample4_02_2_Common_DTO>型) *----------------------------------------------------------------------**/ public List<Sample4_02_2_Common_DTO> selectMemberInfoAll(){ //------------------------------------------- //JDBCドライバのロード //------------------------------------------- try { Class.forName(DRIVER_NAME); //JDBCドライバをロード&接続先として指定 } catch (ClassNotFoundException e) { e.printStackTrace(); } //------------------------------------------- //SQL発行 //------------------------------------------- //JDBCの接続に使用するオブジェクトを宣言 //※finallyブロックでも扱うためtryブロック内で宣言してはいけないことに注意 Connection con = null ; // Connection(DB接続情報)格納用変数 PreparedStatement ps = null ; // PreparedStatement(SQL発行用オブジェクト)格納用変数 ResultSet rs = null ; // ResultSet(SQL抽出結果)格納用変数 //抽出データ(List型)格納用変数 //※最終的にreturnするため、tryブロック内で宣言してはいけないことに注意 List<Sample4_02_2_Common_DTO> dtoList = new ArrayList<Sample4_02_2_Common_DTO>(); try { //------------------------------------------- //接続の確立(Connectionオブジェクトの取得) //------------------------------------------- con = DriverManager.getConnection(JDBC_URL, USER_ID, USER_PASS); //------------------------------------------- //SQL文の送信 & 結果の取得 //------------------------------------------- //発行するSQL文の生成(SELECT) StringBuffer buf = new StringBuffer(); buf.append(" SELECT "); buf.append(" id , "); buf.append(" name , "); buf.append(" gender , "); buf.append(" age , "); buf.append(" course "); buf.append(" FROM "); buf.append(" uzuz_member "); //PreparedStatement(SQL発行用オブジェクト)を生成&発行するSQLをセット ps = con.prepareStatement(buf.toString()); //SQL文の送信&戻り値としてResultSet(SQL抽出結果)を取得 rs = ps.executeQuery(); //ResultSetオブジェクトから1レコード分のデータをDTOに格納 while(rs.next()){ Sample4_02_2_Common_DTO dto = new Sample4_02_2_Common_DTO(); dto.setId( rs.getInt( "id" ) ); dto.setName( rs.getString( "name" ) ); dto.setGender( rs.getString( "gender" ) ); dto.setAge( rs.getInt( "age" ) ); dto.setCourse( rs.getString( "course" ) ); dtoList.add(dto); } } catch (SQLException e) { e.printStackTrace(); } finally { //------------------------------------------- //接続の解除 //------------------------------------------- //ResultSetオブジェクトの接続解除 if (rs != null) { //接続が確認できている場合のみ実施 try { rs.close(); //接続の解除 } catch (SQLException e) { e.printStackTrace(); } } //PreparedStatementオブジェクトの接続解除 if (ps != null) { //接続が確認できている場合のみ実施 try { ps.close(); //接続の解除 } catch (SQLException e) { e.printStackTrace(); } } //Connectionオブジェクトの接続解除 if (con != null) { //接続が確認できている場合のみ実施 try { con.close(); //接続の解除 } catch (SQLException e) { e.printStackTrace(); } } } //抽出データを戻す return dtoList; } }