Javaプログラムからデータベースに対してアクセスするためには、
JDBC
を利用します。
JDBCとは、Javaからデータベースに対してアクセスするための標準APIです。
パッケージ
java.sql
にインタフェースおよび抽象クラスが用意してあり、
データベース付属のライブラリからその実装が提供されます。
JDBCは基本的に以下のように処理を記述します。
1: import java.sql.Connection;
2: import java.sql.DriverManager;
3: import java.sql.ResultSet;
4: import java.sql.SQLException;
5: import java.sql.Statement;
6:
7: ...
8:
9: // 下準備
10: Class.forName("org.h2.Driver");
11: Connection connection = DriverManager.getConnection("jdbc:h2:tcp://localhost/~/test", "sa", "");
12: Statement statement = connection.createStatement();
13:
14: // データベースからデータを取得する場合
15: ResultSet resultSet = statement.executeQuery("SQL文");
16: // 後始末
17: resultSet.close();
18:
19: // データベースのデータを操作する場合
20: int updateCount = statement.executeUpdate("SQL文");
21:
22: // 後始末
23: statement.close();
24: connection.close();
項目名 | 値 |
---|---|
ドライバクラス名 | org.h2.Driver |
接続先URL名 | jdbc:h2:tcp://localhost/~/test |
接続ユーザ名 | sa |
接続パスワード | (空文字列) |
では実際にデータベース操作アプリケーションのコードを記述し、デバッグ・動作確認してみましょう。
ここでは以下のような動作をするアプリケーションを作成します。
第1引数 | 動作 | 第2引数以降 |
---|---|---|
select | テーブルに格納されているデータすべてを標準出力に出力する。 | 不要 |
insert | テーブルにデータを追加する。データの内容は第2引数以降で与える。 | ID, NAME, PASSWORD |
update | テーブルのデータを更新する。データの内容は第2引数以降で与える。 | ID, NAME, PASSWORD |
delete | テーブルのデータを削除する。削除するデータのIDは第2引数で与える。 | ID |
データベースにアクセスするプログラムをtest.Userクラスとして作成してみましょう。
23: public static void main(String[] args) {
24: UserDB userDB = new UserDB();
25:
26: try{
27: // オブジェクトを生成
28: userDB.create();
29:
30: // データ操作
31: userDB.execute(args);
32: }catch(Throwable t) {
33: t.printStackTrace();
34: }finally{
35: // オブジェクトを破棄
36: userDB.close();
37: }
38: }
61: public void create()
62: throws ClassNotFoundException, SQLException{
63: // 下準備
64: Class.forName("org.h2.Driver");
65: _connection = DriverManager.getConnection("jdbc:h2:tcp://localhost/~/test", "sa", "");
66: _statement = _connection.createStatement();
67: }
113: private void executeSelect()
114: throws SQLException{
115: ResultSet resultSet = _statement.executeQuery("SELECT * FROM " + TABLE_NAME);
116: try{
117: boolean br = resultSet.first();
118: if(br == false) {
119: return;
120: }
121: do{
122: String id = resultSet.getString("ID");
123: String name = resultSet.getString("NAME");
124: String password = resultSet.getString("PASSWORD");
125:
126: System.out.println("id: " + id + ", name: " + name + ", password: " + password);
127: }while(resultSet.next());
128: }finally{
129: resultSet.close();
130: }
131: }
139: private void executeInsert(String id, String name, String password)
140: throws SQLException{
141: // SQL文を発行
142: int updateCount = _statement.executeUpdate
("INSERT INTO " + TABLE_NAME + " (ID,NAME,PASSWORD) VALUES ('"+id+"','"+name+"','"+password+"')");
143: System.out.println("Insert: " + updateCount);
144: }
ここまででプロジェクトディレクトリの内容は以下のようになります。
正しく作成できているか、確認してください。
ダウンロード userdb_1.zip
では、UserDB.javaをデバッグしましょう。
java.lang.ArrayIndexOutOfBoundsException: 0 at test.UserDB.execute(UserDB.java:98) at test.UserDB.main(UserDB.java:31)
名称 | 説明 |
---|---|
Resume | 実行を続行します。 |
Terminate | 終了します。 |
Step Into | 関数内部を実行します。 |
Step Over | 1行実行します。(関数内部には入らない) |
Step Return | 関数から脱出します。 |
Code | デバッグ中のコードを表示します。 |
Debug | 表示中のコードの呼び出しスタックを表示します。 |
Variables | 表示中のコードの変数一覧を表示します。 |
id: TEST2, name: テスト2, password: TEST2PASSWORD