JDK付属のDerbyを試して見る
「スッキリわかるJava入門 実践編」の第9章「データベースアクセス」には、Apache DerbyはJava 6から標準添付されていると記載されていたので、実際に試して見た。
PATH環境変数の設定
現在、PCにインストールされているのはJava 8で、以下のフォルダにインストールされている。
JDKのインストールフォルダを確認すると、以下のフォルダが存在するのが分かる。
- Derbyフォルダ
- C:\Program Files\Java\jdk1.8.0_05\db
先ずはコマンドプロンプトでDerbyのコマンドを実行しやすいように、PATH環境変数に以下のパスを追加する。
- Derbyコマンドフォルダ
- C:\Program Files\Java\jdk1.8.0_05\db\bin
初期設定の確認
コマンドプロンプトを開いて、以下のコマンドを実行する。
なお、カレントディレクトリは「C:\work」としたので、予め同フォルダが存在しているものとする。
C:\work> sysinfo ------------------ Java情報 ------------------ Javaバージョン: 1.8.0_20 Javaベンダー: Oracle Corporation Javaホーム: C:\Program Files\Java\jre1.8.0_20 Javaクラスパス: C:\Program Files\Java\jdk1.8.0_05\db\bin\../lib/derby.jar;C:\Program Files\Java\jdk1.8.0_05\db\bin\../lib/derbynet.jar;C:\Program Files\Java\jdk1.8.0_05\db\bin\../lib/derbyclient.jar;C:\Program Files\Java\jdk1.8.0_05\db\bin\../lib/derbytools.jar OS名: Windows 7 OSアーキテクチャ: amd64 OSバージョン: 6.1 Javaユーザー名: pochi Javaユーザー・ホーム: C:\Users\pochi Javaユーザー・ディレクトリ: C:\work java.specification.name: Java Platform API Specification java.specification.version: 1.8 java.runtime.version: 1.8.0_20-b26 --------- Derby情報 -------- [C:\Program Files\Java\jdk1.8.0_05\db\lib\derby.jar] 10.10.1.3 - (1557168) [C:\Program Files\Java\jdk1.8.0_05\db\lib\derbytools.jar] 10.10.1.3 - (1557168) [C:\Program Files\Java\jdk1.8.0_05\db\lib\derbynet.jar] 10.10.1.3 - (1557168) [C:\Program Files\Java\jdk1.8.0_05\db\lib\derbyclient.jar] 10.10.1.3 - (1557168) ------------------------------------------------------ ----------------- ロケール情報 ---------------- 現行ロケール: [日本語/日本 [ja_JP]] ロケールのサポートが見つかりました: [cs] バージョン: 10.10.1.3 - (1557168) ロケールのサポートが見つかりました: [de_DE] バージョン: 10.10.1.3 - (1557168) ロケールのサポートが見つかりました: [es] バージョン: 10.10.1.3 - (1557168) ロケールのサポートが見つかりました: [fr] バージョン: 10.10.1.3 - (1557168) ロケールのサポートが見つかりました: [hu] バージョン: 10.10.1.3 - (1557168) ロケールのサポートが見つかりました: [it] バージョン: 10.10.1.3 - (1557168) ロケールのサポートが見つかりました: [ja_JP] バージョン: 10.10.1.3 - (1557168) ロケールのサポートが見つかりました: [ko_KR] バージョン: 10.10.1.3 - (1557168) ロケールのサポートが見つかりました: [pl] バージョン: 10.10.1.3 - (1557168) ロケールのサポートが見つかりました: [pt_BR] バージョン: 10.10.1.3 - (1557168) ロケールのサポートが見つかりました: [ru] バージョン: 10.10.1.3 - (1557168) ロケールのサポートが見つかりました: [zh_CN] バージョン: 10.10.1.3 - (1557168) ロケールのサポートが見つかりました: [zh_TW] バージョン: 10.10.1.3 - (1557168) ------------------------------------------------------
チュートリアル
以下のサイトに記載の手順にしたがってチュートリアルを実行して見る。
[Create a database]
C:\work>ij ijバージョン10.10 ij> connect 'jdbc:derby:MyDbTest;create=true'; ij> exit; C:\work>type derby.log ---------------------------------------------------------------- Mon Sep 15 12:52:01 JST 2014: DerbyバージョンThe Apache Software Foundation - Apache Derby - 10.10.1.3 - (1557168): インスタンスa816c00e-0148-7770-4ce1-000006e860f8を file:/C:/Program%20Files/Java/jdk1.8.0_05/db/lib/derby.jarからロードされたクラス・ローダーsun.misc.Launcher$AppClassLoader@66d3c617により データベース・ディレクトリC:\work\MyDbTest上でブートしています java.vendor=Oracle Corporation java.runtime.version=1.8.0_20-b26 user.dir=C:\work os.name=Windows 7 os.arch=amd64 os.version=6.1 derby.system.home=null データベース・クラス・ローダーが開始されました - derby.database.classpath='' ---------------------------------------------------------------- Mon Sep 15 12:52:08 JST 2014: Derbyエンジンを停止しています ---------------------------------------------------------------- Mon Sep 15 12:52:08 JST 2014: クラス・ローダーsun.misc.Launcher$AppClassLoader@66d3c617を持つデータベース・ディレクトリC:\work\MyDbTestのインスタンスa816c00e-0148-7770-4ce1-000006e860f8を停止しています ----------------------------------------------------------------
上記の通り、「C:\work\MyDbTest」にデータベースフォルダが作成され、その下に各種データベースファイルが保存されていることが確認できる。
[Connect to a database]
C:\work>ij ijバージョン10.10 ij> connect 'jdbc:derby:MyDbTest';
[Execute SQL statements]
ij> create table derbyDB(num int, addr varchar(40)); 0行が挿入/更新/削除されました ij> insert into derbyDB values (1956,'Webster St.'); 1行が挿入/更新/削除されました ij> insert into derbyDB values (1910,'Union St.'); 1行が挿入/更新/削除されました ij> update derbyDB set num=180, addr='Grand Ave.' where num=1956; 1行が挿入/更新/削除されました ij> select * from derbyDb; NUM |ADDR ---------------------------------------------------- 180 |Grand Ave. 1910 |Union St. 2行が選択されました
[Disconnect from a database]
ij> disconnect;
[Exit]
ij> exit; C:\work>
[Run SQL Scripts]
予め、以下のSQLファイルを作成する。
- ファイル名
- my_file.sql
connect 'jdbc:derby:MyDbTest'; create table OpenDB(name varchar(20),url varchar(50)); insert into OpenDB values ('MySQL', 'http://www.mysql.com'); insert into OpenDB values ('PostgreSQL', 'http://www.postgresql.org'); insert into OpenDB values ('sqlite', 'http://www.sqlite.org'); insert into OpenDB values ('Apache Derby', 'http://db.apache.org/derby'); select * from OpenDB; disconnect;
以下のrunコマンドを実行すると、
C:\work>ij ijバージョン10.10 ij> run 'my_file.sql';
想定通り、手入力と同様にSQLコマンドが実行される。
ij> connect 'jdbc:derby:MyDbTest'; ij> create table OpenDB(name varchar(20),url varchar(50)); 0行が挿入/更新/削除されました ij> insert into OpenDB values ('MySQL', 'http://www.mysql.com'); 1行が挿入/更新/削除されました ij> insert into OpenDB values ('PostgreSQL', 'http://www.postgresql.org'); 1行が挿入/更新/削除されました ij> insert into OpenDB values ('sqlite', 'http://www.sqlite.org'); 1行が挿入/更新/削除されました ij> insert into OpenDB values ('Apache Derby', 'http://db.apache.org/derby'); 1行が挿入/更新/削除されました ij> select * from OpenDB; NAME |URL ----------------------------------------------------------------------- MySQL |http://www.mysql.com PostgreSQL |http://www.postgresql.org sqlite |http://www.sqlite.org Apache Derby |http://db.apache.org/derby 4行が選択されました ij> disconnect;