人気ブログランキング | 話題のタグを見る

日記を書きつつ、意見を書いたり語ってみたり


by poppy_h
カレンダー
S M T W T F S
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31

java データベース利用(Microsoft Access編)

ショッピングカートも完成したので、データベース関係のことも作ることになった。
学校側でMySQLだったか、配っているが、当初の予定からうちの班はMicrosoftAccessを使用している。

さて、Accessって使いにくいの?複雑なの?と思っているかもしれない。

実は、すごく使いやすいのである。


ちょっといじったら、後は基本SQLメッセージを送るだけで処理が済む。
処理も早く、書き換えやすいAccessを利用しているので、簡単に管理が可能。
Excelデータも簡単にインポート可能。


と利点いっぱいなのである。MySQLを使ったことが無いので、そっちの利点などは分からないが。


さて、使い方。

まずJAVAからアクセスするために、ソースの位置を指定しなければならない。
これはJAVAのほうに記述すると思いきや、「Microsoft ODBC アドミニストレータ」というものを使って管理するのである。

コントロールパネル→管理ツール→データソース(ODBC)

まずこれを開く。

そしたら、ユーザーDNSタブが開いていると思うので、そこの追加をクリック。

「セットアップするデータソースのドラバを選択してください」

と出てくるので、

Microsoft Access Driver (*.mdb)

を選択、完了をクリック。

データソース名は自分の好きな名前をつけて良いが、Javaはこの名前で記述していくので、半角文字が良い。データベースと同じ名前にしたほうが分かりやすく無難だろう。

データベース:
[選択] [作成] [修復] [最適化]

とあるので、選択をクリック。
その後、用意したAccessデータベースファイル(拡張子は.mdb)を選択。

それでOKを押し、最初の画面でokをクリックし終了。


これでJAVAでも使用できるようになった。


ではJAVAでどのように使うのか。

まずimportするのは
import java.sql.*;

そしたら、まず
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection con = DriverManager.getConnection("jdbc:odbc:データソース名");
Statement stmt = con.createStatement();

これで接続が出来る。

そしたらSQL文を書き始める。
SQLは基本Stringデータである

たとえば
String sql = "SELECT * FROM 注文情報";

これは注文情報テーブルから全部情報を取り出す、という意味である。
SQLまで説明するととんでもない長さになるので省略。

そしたらこのStringを使用する。

ResultSet res = stmt.executeQuery(sql);

stmtは接続した再に生成されたStatementオブジェクトである。

executeQuery(String)
これでStringを使用するのである。

さて、ResultSetオブジェクトresにデータベースから取り出したデータが入った。

これは1行ずつ扱っていくので、1行のデータを取り出すことが可能だ。

注意点として、1行目からデータが入っているとしても、最初は0行目に位置しているため、そのまま使用とするとエラーが起こってしまう。
なので、まず次の行に行ってからデータを読み出すのである。

次の行に行くためのメソッドはこちら
res.next();

これで次の行に進む。


さて、その行からデータを取り出すにはどうするのか?
それは簡単に実現できる。
int型を取り出す場合:res.getInt("カーソル名");
String型を取り出す場合:res.getString("カーソル名");

カーソル名とは列の名前である。
使用例
String Password = res.getString("Pass");
これでPasswordに今いる行のPass列からデータを取り出す。


データベース書き込む場合、変更する場合、削除する場合はそのSQLを書いた後
executeQueryではなくexecuteUpdateでなければならないので注意。


さて、使用したら接続をきちんと切断しないとならない。
stmt.close();
con.close();
これで切断できる。



以上扱い方を書いてきたが、どうだろう?簡単だとは思わなかっただろうか?
Accessも使いやすいツールなので、もし詰まったら使ってみるのもいいかもしれない。
by poppy_h | 2007-12-03 02:02 | 情報技術