2011-11-30

要素の重複を許さない配列

HashSet

順序の保証はないが、要素の重複を許さない配列
値はコレクションの反復子であるIteratorを使用して取り出す。
下記の様に書くと、aaaaが二回addされているけれど、マージされるので、aaaaとbbbbがそれぞれ一回づつ出力される

HashSet<String> set= new HashSet<String>();
set.add("aaaa");
set.add("bbbb");
set.add("aaaa");
Iterator it = set.iterator();
        while (it.hasNext()) {
            System.out.println(it.next());
        }

java.util.HashSet
http://java.sun.com/javase/ja/6/docs/ja/api/java/util/HashSet.html

java.util.Iterator
http://java.sun.com/javase/ja/6/docs/ja/api/java/util/Iterator.html

2011-11-24

java.sql.SQLException: [SQL7008] 操作には****の****が正しくない。


java.sql.SQLException: [SQL7008] 操作には****の****が正しくない。

とエラーが出て、にっちもさっちも行かなくなった。原因は、ジャーナル処理が開始していなかったから。だったらそうだと言ってほしい。
解決するには、下記の手順でジャーナル処理を開始する必要がある。

  1. ジャーナル・レシーバーを作成する
    • CRTJRNRCV JRNRCV(ライブラリ名/レシーバー名)
  2. ジャーナルを作成する
    • CRTJRN JRN(ライブラリ名/ジャーナル名) JRNRCV(ライブラリ名/レシーバー名) 
  3. ジャーナル処理を開始する
    • STRJRNPF FILE(ライブラリ名/ジャーナル処理する物理ファイル名) JRN(ライブラリ名/ジャーナル名) 

2011-11-22

ProcessBuilderを使って複数のコマンドを実行する

ProcessBuilder#command("コマンド名","引数1","引数2",.....)
複数のコマンドを実行する事は出来ない。あくまでも、引数がたくさん指定できるだけで、コマンドは一つ。
一コマンドの実行は1processでする。
複数コマンドを一度に実行したい時は、「 && 」でつなげる
例)cd c://hoge\hoge && hoge.bat

環境変数をこの方法でつなげると、環境設定は行全体の実行前に展開されてしまうため、実行前の状態でほかのコマンドが実行されてしまうから要注意。
なので、環境設定は下記の方法で指定する。
ProcessBuilder#.environment().put("ssDir", "環境変数で指定したいパス");

2011-11-21

全角スペースでこけた。

com.ibm.as400.access.AS400JDBCDriver だとSQL文に全角スペースが入っている場合、「SQLSTATE 42601 SQLCODE -104」が返ってくる。トークン関係ないじゃん。全角スペースじゃん。

SQL0104 SQLCODE -104 SQLSTATE 42601
説明: トークン &1 が正しくない。有効なトークンは &2。
http://publib.boulder.ibm.com/html/as400/v4r5/ic2962/info/db2/rbafymstnegcodes.htm#HDRNEGCODES








jt400.jarのDB2ドライバで接続する

  • クラス
    • com.ibm.as400.access.AS400JDBCDriver 
  • URL
    • jdbc:as400://<ホスト名>/<ライブラリ名> 

  1. クラスの登録

      • Class.forName(className);

  1. 接続

      • Activator.conn = DriverManager.getConnection(url, user, password);