Servlet/JSP 応用編04 Javaとデータベース
はじめに
今回は、Javaプログラムとデータベースを操作する方法を解説したいと思う。
まず、Javaからデータベースに操作するには、JDBCを使わないといけない。これを利用することで、データベース管理システムにSQL文を発行して、結果を取得できる。さらに、他の利点としては、データベース間の違いを吸収してくれる点である。データベースは様々あり、それぞれ性能が違う。しかし、そのようなことを気にせずに操作できるようにしたのがJDBCである。
データベース接続
データベースを操作するには、接続しなければならない。接続するのにjava.sql.Connectionクラスのインスタンスが必要となる。また、java.sql.DriverManagerのクラスメソッドも必要。使い方は以下の通りになる。
Class.forName("JDBCのクラス名");
Connection conn = DriverManager.getConnection("接続文字列" , "ユーザ名" , "パスワード");
このように、JDBCのクラス名や他の情報が必要となる。なので、接続する情報を変更しないといけないとき、広範囲の修正が必要となる。しかし、現在のJDBC2.0では、データソースという機能が増えた。データソースというのは、アプリケーションサーバを利用してデータベースに接続する仕組みである。
利点は2つある。
1つ目は、接続に必要な情報をアプリケーションサーバの設定ファイルに記述することができる。なので、情報の変更が簡単、または、容易になる。
2つ目は、データベースの接続の際に、再利用することで、性能を向上させることができる。
では、データベースにアクセスする手順を説明していく。
簡単に言うと、データベースに接続し、SQLを作成、実行。結果を取得、必要な処理の実行。最後に切断を行う。
一つ一つに様々なメソッドを使う。実際のプログラムの中で解説していく。
今回作成するプログラム
今回は、データベースに接続する練習なので、商品一覧を取得し、表示するサーブレットを作成する。つまり、サーブレットの中で、
select * from product;
を実行すればよい。
実際に書いていく。
まず、データベースを扱ううえで必要なクラスなどをインポートする。
try文の中は、最初にInitialContextオブジェクトを生成。これにより、データやオブジェクトを名前で参照することができる。しかし、これだけでは意味がないので、lookupメソッドを使う。引数には、データソースのオブジェクトを入れる。ここで、注意があり、lookupメソッドの返り値はObject型であるから、キャストが必要となる。そして、DataSource型の変数に入れれば、あとは、接続するだけである。getConnectionを使用すれば、接続できる。接続が終われば、次は、SQLの作成と実行である。実行するためにPreparedStatementオブジェクトを取得する。そして、このSQL文をexecuteQueryメソッドを実行し、ResultSetオブジェクトとして取得する。
これで、データを取得できたので、while文の中で、nextメソッドを使用し、行ごとに、IDとname、priceの値を取っていく。nextメソッドの返り値はbooleanで、データがなくなれば、falseで帰ってくる。最後には、closeメソッドで、データベースとの接続を切る。
実際に実行すると下記のようになった。
10 : つぶ貝 :100
11 : サラダ軍艦 :150
12 : ねぎとろ軍艦 :150
13 : ねぎとろ巻 :150
14 : アボガド巻 :150
前の記事で、idが10より下、14より上を消したので全部のデータが表示されていることが分かる。
おわりに
今回は、データベースに接続する方法を紹介した。次回からは、Javaプログラムから商品を検索、追加などをしていこうと思う。