Apache Derby

IBM Cloudscape Workbench (Derby)

前回8/28の続き。

  • MS-DOSプロンプトからijコマンドでSQLファイルを実行する
  • JavaプログラムからDerbyを検索

Cloudscapeのマニュアルは和訳されていてIBMのサイトで公開されています。 IBM Cloudscape™ インフォメーション・センター

1.ディレクトリ構成

d:\
 + opt
 | + db-derby
 |   + frameworks
 |   + lib
 |     + derby.jar
 |     + derbytools.jar
 + home
 | + hoge
 |   + derby_run.bat
 |   + create_police.sql
 |   + DispPolice.java

2.準備

derby_run.bat
@rem derby setup batch file.
@rem create: 2005/08/28
@rem author: papa33
@rem
@rem set env
@rem
set JAVA_HOME=D:\opt\j2sdk1.4.2_05
set PATH=%JAVA_HOME%\bin;%PATH%
set DERBY_INSTALL=D:\opt\db-derby
rem set CLASSPATH=%DERBY_INSTALL%\lib\derby.jar;%DERBY_INSTALL%\lib\derbytools.jar;%rem CLASSPATH%cd %MY_CURRENT_DIR%
set CLASSPATH=%DERBY_INSTALL%\lib\derby.jar;%DERBY_INSTALL%\lib\derbyLocale_ja_JP.jar;%DERBY_INSTALL%\lib\derbynet.jar;%DERBY_INSTALL%\lib\derbyclient.jar;%DERBY_INSTALL%\lib\derbytools.jar;%CLASSPATH%
java org.apache.derby.tools.sysinfo
echo "java org.apache.derby.tools.sysinfo"
echo "java org.apache.derby.tools.ij"
cmd /f:on
rem java org.apache.derby.tools.ij
rem start
rem pause
create_police.sql
connect 'jdbc:derby:police_db;create=true';

CREATE TABLE police_tbl(
id INTEGER,
nickname  VARCHAR(20),
player VARCHAR(20)
);

commit;

INSERT INTO police_tbl VALUES (1,'ボス','石原裕次郎');
INSERT INTO police_tbl VALUES (2,'山さん','露口茂');
INSERT INTO police_tbl VALUES (3,'ゴリさん','竜雷太');
INSERT INTO police_tbl VALUES (4,'長さん','下川辰平');
INSERT INTO police_tbl VALUES (5,'殿下','小野寺昭');
INSERT INTO police_tbl VALUES (6,'マカロニ','萩原健一');
INSERT INTO police_tbl VALUES (7,'シンコ','関根恵子');
INSERT INTO police_tbl VALUES (8,'ジーパン','松田優作');
INSERT INTO police_tbl VALUES (9,'テキサス','勝野洋');
INSERT INTO police_tbl VALUES (10,'ボン','宮内淳');
INSERT INTO police_tbl VALUES (11,'スコッチ','沖雅也');
INSERT INTO police_tbl VALUES (12,'ロッキー','木之元亮');
INSERT INTO police_tbl VALUES (13,'スニーカー','山下真司');
INSERT INTO police_tbl VALUES (14,'ドック','神田正輝');
INSERT INTO police_tbl VALUES (15,'ラガー','渡辺徹');
INSERT INTO police_tbl VALUES (16,'ジプシー','三田村邦彦');
INSERT INTO police_tbl VALUES (17,'ボギー','世良公則');
INSERT INTO police_tbl VALUES (18,'トシさん','地井武男');
INSERT INTO police_tbl VALUES (19,'マミー','長谷直美');
INSERT INTO police_tbl VALUES (20,'ブルース','又野誠治');
INSERT INTO police_tbl VALUES (21,'マイコン','石原良純');
INSERT INTO police_tbl VALUES (22,'デューク','金田賢一');
INSERT INTO police_tbl VALUES (23,'警部','金田賢一');
INSERT INTO police_tbl VALUES (24,'DJ','西山浩司');
INSERT INTO police_tbl VALUES (25,'オサム','寺尾聰');

commit;

SELECT
  id AS ID,
  nickname AS "ニックネーム",
  player AS "役者"
FROM
  police_tbl;
DispPolice.java
import java.util.*;
import java.sql.*;

public class DispPolice {
  public static void main(String args[]) {
    try{
      Class.forName("org.apache.derby.jdbc.EmbeddedDriver");
	} catch (ClassNotFoundException e) {
      e.printStackTrace();
	}
    Connection conn = null;
    Statement stmt = null;
	Properties props = new Properties();
    try {
      conn = DriverManager.getConnection("jdbc:derby:police_db",props);
      stmt = conn.createStatement();
      ResultSet rs = stmt.executeQuery("SELECT id, nickname, player FROM police_tbl");
      while (rs.next()) {
        System.out.println(
          "id : " + rs.getString(1)
          + " nickname : " + rs.getString(2)
          + " player : " + rs.getString(3)
		  );
	  }
	} catch (SQLException e) {
		e.printStackTrace();
	} finally {
	  try {
	    if (stmt != null) {
	      stmt.close();
		}
		if (conn != null) {
		    conn.close();
		}
	  } catch (Exception ignore) {}
	}
  }
}

3.実行

D:\home\hoge>derby_run.bat
D:\home\hoge>java org.apache.derby.tools.ij create_police.sql
D:\home\hoge>javac DispPolice.java
D:\home\hoge>java DispPolice
id : 1 nickname : ボス player : 石原裕次郎
id : 2 nickname : 山さん player : 露口茂
id : 3 nickname : ゴリさん player : 竜雷太
id : 4 nickname : 長さん player : 下川辰平
id : 5 nickname : 殿下 player : 小野寺昭
id : 6 nickname : マカロニ player : 萩原健一
id : 7 nickname : シンコ player : 関根恵子
id : 8 nickname : ジーパン player : 松田優作
id : 9 nickname : テキサス player : 勝野洋
id : 10 nickname : ボン player : 宮内淳
id : 11 nickname : スコッチ player : 沖雅也
id : 12 nickname : ロッキー player : 木之元亮
id : 13 nickname : スニーカー player : 山下真司
id : 14 nickname : ドック player : 神田正輝
id : 15 nickname : ラガー player : 渡辺徹
id : 16 nickname : ジプシー player : 三田村邦彦
id : 17 nickname : ボギー player : 世良公則
id : 18 nickname : トシさん player : 地井武男
id : 19 nickname : マミー player : 長谷直美
id : 20 nickname : ブルース player : 又野誠治
id : 21 nickname : マイコン player : 石原良純
id : 22 nickname : デューク player : 金田賢一
id : 23 nickname : 警部 player : 金田賢一
id : 24 nickname : DJ player : 西山浩司
id : 25 nickname : オサム player : 寺尾聰