AsanDatabaseBrowser

### 起動方法

run.batをダブルクリックします。
あるいは、AsanDatabaseBrowser.jarをダブルクリックしても起動できると思います。
以下の画面が表示されます。
最初に起動した直後は、利用可能なメニューは　[データベース接続を追加]　程度しかありません。
従って、次にすべきことは　[データベース接続を追加]　することです。
マニュアルがなくても直感で操作できるように工夫しています。

### データベース接続を追加

メニューの　[データベース接続を追加]　を選択すると以下の　[データベース接続を追加]　ダイアログが開きます。
マウスを各コンポーネントに近づけると、ほとんどの箇所でツールチップが表示されます。 ドキュメントを見なくても使えるように工夫しています。
JavaやJDBCに詳しい開発者ならば、ほとんどの箇所は設定できると思います。
ドライバ名やURLはコンボボックスになっており、有名なデータベースのものならば最初から選択肢にあります。 選択後、IPアドレスやポート番号、データベース名等を編集してください。 選択項目にないデータベースでも指定可能です。
３つのチェックボックスは、デフォルトのままでOKです。 それらは推奨する値、問題の少ない値をデフォルト値にしています。
[データベース製品]は必ず設定する必要はありませんが、選択肢に出てくるデータベースならば、 あわせておくことをお勧めします。 これは、JDBCドライバによっては、不具合があったり、他のデータベースのJDBCドライバとは異なった実装を行っており、 特殊な回避策が必要な場合があります。それを有効にします。
３つのタブがありますが、必要なのは最初のタブだけです。
[了解]ボタンを押すと設定が終了します。
これらの設定はあとで変更することもできます。

### データベースへの接続

先ほど登録したデータベース接続を選択し、[接続]　ボタンを押すとデータベースへに接続します。
ユーザ名とパスワードを問い合わせるように設定していると、[データベースへの接続]ダイアログが開き、 ユーザ名、パスワードの入力をうながします。
接続に成功すると、アイコンの色が変わり、データベース内のスキーマやカタログ、テーブルやビューを参照することができます。

### ３つのウィンドウ（その１）：テーブルウィンドウ

これは１つのテーブルに対して操作するためのウィンドウです。
まず左下にある、レコードが表形式で表示されているビューと、 右下にあるプロパティ形式で表示されているビューに注目してください。
私はいろんなシステムにたずさわってきましたが、 システムによってはカラムが１００個を越える場合があります。 カラムが多いと、左右にスクロールするだけでも大変です。 そこで、選択されたレコードをプロパティ形式で表示するビューを用意しました。 カラムが多い場合でもひと目でその値を確認することができます。
次にタブのビューに注目してください。
このウィンドウは１つのテーブルに対して操作するため、 最初の　[select * from テーブル名]　までは常に固定です。 ツールバーの下、タブの間にある文字　[select * from テーブル名]　に注目してください。 そのため、その箇所は変更できません。 しかし、テキストエリアにwhere句以降を記述することにより、レコードを絞り込んだり、 ソートなどを行うことができます。
上記の画面では、以下のSQLを実行した場合と同じです。 このサンプルでは、性別=男性で、生年月日の昇順で表示しています。

    select * from `biblio_jp`.`authors`
    -- ここにwhere句以降を記述してください
    where sex='1'
    order by birthday

また、レコードを直接編集したり、挿入、削除することができます。 ツールバーの４つの のアイコンがそれに該当します。
は、新しいレコードをデフォルト値で作成します。
は、選択されたレコードを初期値とした新しいレコードを作成します。
は、選択されたレコードを編集します。
は、選択されたレコードを削除します。
いずれも注意すべきことは、これらの操作は直接データベースに行っているわけではなく、 GUIのメモリ上で行っているに過ぎません。 これらの操作を行っても、データベースに対してはSQLを発行していません。 これらの操作は、INSERT文/UPDATE文/DELETE文のSQLを作成していると考えるとよいかもしれません。 実際にSQLにINSERT文やUPDATE文、DELETE文を発行するのは、 ボタンを押したときです。
さらに、注意すべきは、SQLを発行しても、AutoCommitはOFFのため、[commit]ボタンを押さないと、 正式にデータベースには更新されないことです。
このような面倒なGUIにしたのは理由があります。
データベースへの更新は慎重に行うべきであり、どんなに優秀な技術者でも、人間である以上間違えることがあります。 また、間違えたときの影響は計り知れません。 そのため、データを更新する際には、「メモリ上の編集」、「SQLの発行」、「commit/rollbackの発行」と ３つの手順を踏むように作られています。これは、このあとに説明する他のウィンドウについても同様です。
このツールではAutoCommitは常にOFFであり、ONにすることはできません。
[rollback]ボタンを押せば、すべての編集をやり直すことができます。

### ３つのウィンドウ（その２）：SQLウィンドウ

先ほどの、「テーブル・ウィンドウ」は１つのテーブルに対する照会や更新が可能でしたが、 このウィンドウは複数のテーブルに対する照会が可能です。 複雑なクエリーを実行することはできます。
しかし、更新はできません。
そのため、先ほどのビューと比べ、更新系のツールボタンがありません。

### ３つのウィンドウ（その３）：実行ウィンドウ

このウィンドウは、更新系、すなわちINSERTやUPDATE、DELETEを行う場合に使います。
また、データベースによっては、CREATE TABLEなども実行することができます。
最初に開いたときには、INSERT/UPDATE/DELETE文の簡単な文法がコメントの状態で表示されています。 これは、SQLを熟知していない人のために用意したコメントです。 私もこれを作った当時はSQLは詳しくなかったので、とても助かりました。

### SQL入力窓

上記３つのウィンドウには、すべてSQL入力窓があります。この機能について説明します。
SQL文に色分けされているのがわかります。
コメントは緑、値は赤、SQL文のキーワードはピンクなどと色分けをしています。
同じピンクでも若干色が違うものがありますが、これはANSI SQLのバージョンの違いにより色分けしています。
この色わけは、 BlancoSqlEditorPlugin を参考にしました。
- ANSI SQL89
- ANSI SQL92
- ANSI SQL99
- TRUNCATEなどのメジャーな (しかし ANSI SQLには含まれない) キーワード
- 数値や文字列などの値
- その他の文字列
- コメント
ポップアップメニューを開くと、[SQL整形を行う]というメニューがあります。 これを実行すると、このような長いSQLを・・・、

    insert into `biblio_jp`.`authors`(author_code,author_name,author_kana,birthday,sex)values(3,'夏目　漱石','なつめ　そうせき','1867-02-09',1);

以下のように整形します。

    insert
        into
            `biblio_jp`.`authors` (
                author_code
                ,author_name
                ,author_kana
                ,birthday
                ,sex
            )
        values (
            3
            ,'夏目　漱石'
            ,'なつめ　そうせき'
            ,'1867-02-09'
            ,1
        )
    ;

私が時々出会うシステムでは、プログラム中に長くて読みづらいSQLがあることがよくあります。 その場合は、このエディタで整形することができます。 この整形には、 blancoSqlFormatter を使ってます（私もこのライブラリの開発者の一人です）。
また、ポップアップメニューには、[選択した範囲を１行に]というメニューがあります。 これは、先ほど編集したSQLを元の1行のSQLにし、プログラムに戻したいときに便利です。
他にも、[コメントの追加]、[コメントの除去]、[選択された範囲のコメントを削除]など、 SQL文の編集に便利な機能を用意しています。
ツールバーの２つのツールボタン について説明します。
SQLを実行する際に、最初に実行したSQLに対して条件を変えたり、SQLを変形させて実行することがよくありますが、 それに失敗して、元のSQLを再実行したい場合があります。 あるいは、変更前と後のSQLで実行結果を比べたいときがあります。 通常はSQL文を他のエディタに退避させていますが、 ボタンを押すことにより、 現在のSQLを保持しつつ、それを複製して新しいSQLを編集することができます。 １つのウィンドウで複数のSQLを保持することができます。

### オプション

デフォルトでは、最大レコード数が1000件になっています。
検索するときに、それ以上の検索結果があったとしても、その件数分しか取得しません。 より多くのレコードを検索したい場合は、 使用しているPCのスペックやネットワーク環境と相談して件数を増やしてください。
平均的な開発マシンやLAN環境ならば、1万件ぐらいは許容範囲だと思います。

### SQLログビュー

発行したSQLをログに出力していますが、それをビューで見ることができます。 データベースに詳しい人は、このツールがどのようなSQLを発行しているのかが気になるでしょう。 このビューを開いておけば、発行されたSQLを確認でき、データベースの挙動を把握することができます。

### レコード件数を欽ちゃんの仮装大賞のように表示するダイアログ

ツリービューのスキーマーやカタログのポップアップメニューに、[レコード件数]というメニューがあります。 これを選択すると、その配下にある全テーブルのレコード件数を、欽ちゃんの仮装大賞のように表示します。
どのテーブルにどの程度レコードがあるかを簡単に見ることができます。

### JavaやJDBCに関する様々な情報

JDBCのメタデータは、ツリービューのポップアップメニューの[メタデータの表示(M)]で見ることができます。 それには、JDBCの詳細なバージョン情報や、組み込み関数の一覧などが表示されます。 使い慣れないデータベースでは「文字列の結合」や「タイムスタンプの引き算」の名前がわからないときがよくありますが、 このメタデータから探す方が速い場合があります。
ツリービューでデータベースを選択し、ポップアップメニューの[データベース定義を開く]を選択すると、 そのデータベースに関する情報が取得できます。特に[TypeInfo]タブが有用です。 そのデータベースで扱える型の一覧と、その型の上下限値や精度などがわかります。
ツリービューでテーブルを選択し、ポップアップメニューの[テーブル定義を開く]を選択すると、 そのテーブルのカラムの型や初期値、主キー、インデックスなどがわかります。
JDBCで開発を行っているとき、JavaやJDBCに関する様々な情報を確認したいときがあります。 例えば、CLASS_PATHやJREやJDBCのバージョンなどです。
JavaのSystemPropertiesについては、[バージョン情報]の[SystemProperties]タブで確認することができます。 また、JavaVMのメモリの使用量、空き容量等も確認できます。
JavaやJDBCを使った開発をしていると、このような情報が欲しい場合があります。 そのために用意しました。

### お気に入り

[ツリービュー]に[お気に入り]というタブがありますが、これは、巨大プロジェクトで 開発する際に追加した機能です。 その巨大プロジェクトでは、いくつかのスキーマごとに１００を超えるテーブルがありました。 しかし、自分の担当する機能はその中のたった数テーブルだけです。 毎回その数テーブルを探すのは時間がかかります。 そのため、自分の担当しているテーブルだけを一箇所に集めて作業したかったのです。 それが[お気に入り]です。