|
JavaBeansを使ったSQL操作2
|
前回は、JavaBeansを使ってデータベースの登録処理を行ったのですが、今回はJavaBeansを使ってデータの検索を行います。
登録処理では、データを受け取る必要がなかったのですが、検索ではSQLを実行させて、その結果を受け取る必要があります。 |
今回はJavaBeansからデータを受け取る方法を中心に説明していきたいと思います。
まず、「NextDataBean.java」というファイルを作成し、このファイルにJavaBeansのコードを記述していきたいと思います。
クラス名は「NextDataBean」となります。
データベースを実行させるために必要なDataSourceやSql文は前回と同じで、サーブレットから受け取るようにしています。
Bean内でデータを受け取る方法は前回とほとんど同じで、データソース、SQLはそれぞれ「setds」と、
「setSql」とします。
その上で、今回は検索したデータをサーブレットに返す必要が出てきます。
サーブレットにデータを返す方法はいくつかありますが、サーブレットでは、受け取ったデータを画面上に表示させたり、データベースに登録したりと加工が必要になります。
これが画面上に表示するだけであれば、あらかじめBean内でHTML形式で作成しておいてそのデータを送る方法もありますが、今回はデータのみをやり取りしたいと思います。
今回は、Vectorデータとして、情報をサーブレットに返す方法を使います。
public Vector getResult() {
Vector tbl = new Vector();
int num;
String buf;
try{
con = this.ds.getConnection();
Statement statement = con.createStatement();
ResultSet result = statement.executeQuery(this.sql);
if (result.next() == true){
num = result.getInt("id");
buf = Integer.toString(num);
tbl.addElement(buf);
tbl.addElement(result.getString("type_data"));
tbl.addElement(result.getString("type_kana"));
num = result.getInt("word_cnt");
buf = Integer.toString(num);
tbl.addElement(buf);
num = result.getInt("level");
buf = Integer.toString(num);
tbl.addElement(buf);
}
result.close();
statement.close();
con.close();
}
catch(SQLException ex){
ex.printStackTrace();
}
return tbl;
}
|
ここでは、タイピングのデータを取得します。
次のデータを取得するためのSQL文はサーブレット上にあらかじめ作成しておき、ここではそのSQL文で得られる新しいタイピングデータを取得します。
まず、Vectorを定義します。
今回は、「tbl」という名前をつけています。
ここに、順番にデータを登録していきます。
登録には、「addElement」を利用します。
必要なデータをVebtorデータとして登録したら、サーブレットでそのデータを受け取ります。
|
サーブレットから、Beansを呼び出して、データを取得していきます。
NextDataBean nextdata = new NextDataBean();
nextdata.setds(ds);
sql = "SELECT * FROM type_table ";
sql = sql + "where level <= " + wlevel;
sql = sql + " order by rand()" ;
nextdata.setSql(sql); |
上記は、データを取得するための準備です。
Bean内で必要なデータソース、SQLを登録しています。
Vector ndt = nextdata.getResult();
session.setAttribute("type_cnt",Integer.toString(type_count));
//出題番
buf = (String)ndt.elementAt(0);
session.setAttribute("id",buf);
buf = (String)ndt.elementAt(1);
session.setAttribute("type",buf);
buf = (String)ndt.elementAt(2);
session.setAttribute("kana",buf);
buf = (String)ndt.elementAt(3);
session.setAttribute("wd_cnt",buf);
buf = (String)ndt.elementAt(4);
session.setAttribute("dblevel",buf);
|
上記では、Beanから受け取ったデータをセッション情報に登録しています。
Vectorに登録したデータは、配列になっていて、0から始まります。
Vectorデータを取り出すのは、「elementAt」で取得できます。
今回は、5つのデータを受け取るので、配列は0〜4まで使っています。
今回は、受け取った情報をセッション情報に登録しています。 |
今回はJavaBeansで、データを受け取る方法を紹介しました。
データベースの処理をBeansで行う事は、よくある事だと思いますので、サーブレットやJSPからBeansを扱う方法は憶えておいた方が良いと思います。 |
JAVABeansを使ったSQL操作 UP システムの再構築 |
|
|