管理プログラム作成3
|
前回はマスターデータの登録及び更新が出来る画面を作成しましたが、今回は学科テーブルの登録画面を作成していきたいと思います。 |
管理プログラム作成1で学科テーブルの役割については説明したのですが、簡単におさらいしたいと思います。
学科テーブルは、学科に対してどの生徒がいるのかを関連付けするためのテーブルです。
データの取り扱いとしては、学科マスターと生徒テーブルを関連付けするためのテーブルになります。
学科テーブルでは、学科と生徒の関連を1件づつ登録することで、一人の生徒が複数の学科を持つことが出来、学科に対しての人数に制限がかかることを防いでいます。 |
生徒テーブル |
|
学科マスター |
ID |
氏名 |
ID |
学科名 |
1 |
A |
1 |
福祉 |
2 |
B |
2 |
介護 |
3 |
C |
|
|
4 |
D |
|
|
5 |
E |
|
|
6 |
F |
|
|
学科テーブルのデータ登録の原理を簡単に表にしたいと思います。
左記のデータがあるとして、生徒テーブルのA、C、Dが学科マスターの福祉、B、E、Fが介護と言う風に分けたい場合に、学科テーブルに登録して、内容を分けていきます。
学科テーブル |
ID |
学科ID |
生徒ID |
1 |
1 |
1 |
2 |
1 |
3 |
3 |
1 |
4 |
4 |
2 |
2 |
5 |
2 |
5 |
6 |
2 |
6 |
学科テーブルには、左記のようなデータを登録することで、学科単位に生徒を分けることができるようになります。
|
では、実際にプログラムの開発に入っていきたいと思います。
まず、登録用の画面を作成していきます。
登録画面では、学科マスターの一覧データと生徒テーブルの一覧データを取得し、それぞれのデータを選択して登録していきます。
ただし、今回のプログラムでは、今までと違うところがあります。
今までは、データを登録する際に1件のデータを取得し登録していましたが、今回は学科マスターはひとつですが、生徒テーブルの情報については、複数の情報を一度に取得し、一気に登録していきたいと思います。
それぞれのデータは、データベースから取得して表示させ、生徒の情報については複数選択が出来るようにJSPファイルを作成しました。
<FORM action="study-add" method="POST">
<TABLE border="0">
<TBODY>
<TR>
<TD>学科マスター</TD>
<TD>生徒データ</TD>
<TD>授業年度</TD>
<TD>学期</TD>
<TD>
</TR>
<TR>
<TD>
<SELECT name="study_master">
<jsp:include page="studymasterselectlist" flush="true" />
</SELECT>
</TD>
<TD>
<SELECT size="10" name="student" multiple>
<jsp:include page="studentselectlist" flush="true" />
</SELECT>
</TD>
<TD>
<SELECT name="year">
<OPTION value="2004">2004</OPTION>
<OPTION value="2005">2005</OPTION>
<OPTION value="2006">2006</OPTION>
<OPTION value="2007">2007</OPTION>
<OPTION value="2008">2008</OPTION>
</SELECT>
</TD>
<TD>
<SELECT name="term">
<OPTION value="1">前期</OPTION>
<OPTION value="2">後期</OPTION>
</SELECT>
</TD>
</TR>
<TR>
<TD colspan="4" align="right">
<INPUT type="submit" name="login" value="登録">
</TD>
</TR>
</TBODY>
</TABLE>
</FORM>
|
学科マスターと生徒データは、それぞれリスト用のサーブレットを作り、表示されるようにしています。
さらに生徒データについては、「 multiple」を指定することで、複数選択を可能にしています。
|
次に上記のJSPファイルから送られてきた内容で学科テーブルを登録するためのプログラムを作成していきます。
上記でも述べましたが、今回は複数の生徒情報を取得し、一気に登録する必要があるので、今までとは多少違う部分が出てきます。
今回は、違うところを中心に説明していきたいと思います。
まずはじめにパラメータの取得方法が若干変わってきます。
今までであれば、「getParameter()」メソッドを使用して、JSPファイルからのパラメータを取得していました。
「getParameter()」メソッドでは、ひとつのパラメータを取得するのは問題ないのですが、今回の生徒データのように複数のデータを扱うことはできません。
そこで、複数のデータを扱う場合には、「getParameterValues()」メソッドを使います。
「getParameterValues()」メソッドでは、複数のパラメータを一気に取得することが出来るようになっています。
String student[] = req.getParameterValues("student"); |
上記が実際にプログラム上でデータを取得している記述です。「String student[]
」は配列になっているので、複数のパラメータを取得できるようになります。
他のパラメータについては、今までどおりひとつのデータを取得する形になるので、ここでは割愛します。 |
パラメータの取得が出来たら、実際にデータをデータベースに登録していくわけですが、ひとつの学科に対して、複数の生徒がいるため、生徒の人数分データを登録する必要が出てきます。
ここでは、データを繰り返し登録する方法を説明していきたいと思います。
ここでは、生徒の人数分の登録が必要なので、何人選択したのかを確認する必要があります。
何件のデータがあるのかを確認するには、さきほど取得した「student」から取得します。
「student.length」で「student」の中に何件データ入っているのかを取得できますので、その回数分だけループ処理をさせることにします。
for(int i = 0;i < student.length; i++) |
関数のfor文を使って「student.length」の回数だけループさせています。
あとは、このループの中で、登録処理を行っていけばよいわけです。
登録する内容は、学科マスターの内容と、生徒の情報、年度などですが、生徒の情報以外は同じ内容になります。
生徒の情報については、上記のループの情報を利用して、データを変更していきます。
for(int i = 0;i < student.length; i++){
sql = "insert study_table (studymaster_id,student_id,st_year,st_term)";
sql = sql + " values (" + study_master + "," +
student[i] + "," + year + "," + term + ")";
statement.executeUpdate(sql);
} |
上記の内容で登録処理を行っています。
生徒情報の「student[i]」と設定しています。変数「i」を利用し、生徒の情報を順番に登録していきます。 |
これで、学科テーブルの登録が完了しました。
今回のポイントは、複数のデータをパラメータとして取得するときは、「getParameterValues()」メソッドを利用し、JAVAで受け取る際には、変数を配列にして取得することがひとつ!
もうひとつは、複数のパラメータを一気に登録する際に、件数分のループ処理を行ってデータの登録をすることです。
次回は、学科テーブルの内容の一覧表示や削除を行いたいと思います。 |
管理プログラム作成2 UP 管理プログラム4 |

|