AsanDatabaseBrowser
起動方法
run.batをダブルクリックします。
あるいは、AsanDatabaseBrowser.jarをダブルクリックしても起動できると思います。
以下の画面が表示されます。

最初に起動した直後は、利用可能なメニューは [データベース接続を追加] 程度しかありません。
従って、次にすべきことは [データベース接続を追加] することです。
マニュアルがなくても直感で操作できるように工夫しています。
データベース接続を追加
メニューの [データベース接続を追加] を選択すると以下の [データベース接続を追加] ダイアログが開きます。
![[データベース接続を追加] ダイアログ](database_add.png)
マウスを各コンポーネントに近づけると、ほとんどの箇所でツールチップが表示されます。
ドキュメントを見なくても使えるように工夫しています。
JavaやJDBCに詳しい開発者ならば、ほとんどの箇所は設定できると思います。
ドライバ名やURLはコンボボックスになっており、有名なデータベースのものならば最初から選択肢にあります。
選択後、IPアドレスやポート番号、データベース名等を編集してください。
選択項目にないデータベースでも指定可能です。
3つのチェックボックスは、デフォルトのままでOKです。
それらは推奨する値、問題の少ない値をデフォルト値にしています。
[データベース製品]は必ず設定する必要はありませんが、選択肢に出てくるデータベースならば、
あわせておくことをお勧めします。
これは、JDBCドライバによっては、不具合があったり、他のデータベースのJDBCドライバとは異なった実装を行っており、
特殊な回避策が必要な場合があります。それを有効にします。
3つのタブがありますが、必要なのは最初のタブだけです。
[了解]ボタンを押すと設定が終了します。
これらの設定はあとで変更することもできます。
データベースへの接続
先ほど登録したデータベース接続を選択し、[接続] ボタンを押すとデータベースへに接続します。
ユーザ名とパスワードを問い合わせるように設定していると、[データベースへの接続]ダイアログが開き、
ユーザ名、パスワードの入力をうながします。
接続に成功すると、アイコンの色が変わり、データベース内のスキーマやカタログ、テーブルやビューを参照することができます。
3つのウィンドウ(その1):テーブルウィンドウ

これは1つのテーブルに対して操作するためのウィンドウです。
まず左下にある、レコードが表形式で表示されているビューと、
右下にあるプロパティ形式で表示されているビューに注目してください。
私はいろんなシステムにたずさわってきましたが、
システムによってはカラムが100個を越える場合があります。
カラムが多いと、左右にスクロールするだけでも大変です。
そこで、選択されたレコードをプロパティ形式で表示するビューを用意しました。
カラムが多い場合でもひと目でその値を確認することができます。
次にタブのビューに注目してください。
このウィンドウは1つのテーブルに対して操作するため、
最初の [select * from テーブル名] までは常に固定です。
ツールバーの下、タブの間にある文字 [select * from テーブル名] に注目してください。
そのため、その箇所は変更できません。
しかし、テキストエリアにwhere句以降を記述することにより、レコードを絞り込んだり、
ソートなどを行うことができます。
上記の画面では、以下のSQLを実行した場合と同じです。
このサンプルでは、性別=男性で、生年月日の昇順で表示しています。
select * from `biblio_jp`.`authors`
-- ここにwhere句以降を記述してください
where sex='1'
order by birthday
また、レコードを直接編集したり、挿入、削除することができます。
ツールバーの4つの
のアイコンがそれに該当します。
は、新しいレコードをデフォルト値で作成します。
は、選択されたレコードを初期値とした新しいレコードを作成します。
は、選択されたレコードを編集します。
は、選択されたレコードを削除します。
いずれも注意すべきことは、これらの操作は直接データベースに行っているわけではなく、
GUIのメモリ上で行っているに過ぎません。
これらの操作を行っても、データベースに対してはSQLを発行していません。
これらの操作は、INSERT文/UPDATE文/DELETE文のSQLを作成していると考えるとよいかもしれません。
実際にSQLにINSERT文やUPDATE文、DELETE文を発行するのは、
ボタンを押したときです。
さらに、注意すべきは、SQLを発行しても、AutoCommitはOFFのため、[commit]ボタンを押さないと、
正式にデータベースには更新されないことです。
このような面倒なGUIにしたのは理由があります。
データベースへの更新は慎重に行うべきであり、どんなに優秀な技術者でも、人間である以上間違えることがあります。
また、間違えたときの影響は計り知れません。
そのため、データを更新する際には、「メモリ上の編集」、「SQLの発行」、「commit/rollbackの発行」と
3つの手順を踏むように作られています。これは、このあとに説明する他のウィンドウについても同様です。
このツールではAutoCommitは常にOFFであり、ONにすることはできません。
[rollback]ボタンを押せば、すべての編集をやり直すことができます。
3つのウィンドウ(その2):SQLウィンドウ

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

このウィンドウは、更新系、すなわちINSERTやUPDATE、DELETEを行う場合に使います。
また、データベースによっては、CREATE TABLEなども実行することができます。
最初に開いたときには、INSERT/UPDATE/DELETE文の簡単な文法がコメントの状態で表示されています。
これは、SQLを熟知していない人のために用意したコメントです。
私もこれを作った当時はSQLは詳しくなかったので、とても助かりました。
SQL入力窓
上記3つのウィンドウには、すべて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
を使ってます(私もこのライブラリの開発者の一人です)。
また、ポップアップメニューには、[選択した範囲を1行に]というメニューがあります。
これは、先ほど編集したSQLを元の1行のSQLにし、プログラムに戻したいときに便利です。
他にも、[コメントの追加]、[コメントの除去]、[選択された範囲のコメントを削除]など、
SQL文の編集に便利な機能を用意しています。
ツールバーの2つのツールボタン
について説明します。
SQLを実行する際に、最初に実行したSQLに対して条件を変えたり、SQLを変形させて実行することがよくありますが、
それに失敗して、元のSQLを再実行したい場合があります。
あるいは、変更前と後のSQLで実行結果を比べたいときがあります。
通常はSQL文を他のエディタに退避させていますが、
ボタンを押すことにより、
現在のSQLを保持しつつ、それを複製して新しいSQLを編集することができます。
1つのウィンドウで複数の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を使った開発をしていると、このような情報が欲しい場合があります。
そのために用意しました。
お気に入り
[ツリービュー]に[お気に入り]というタブがありますが、これは、巨大プロジェクトで
開発する際に追加した機能です。
その巨大プロジェクトでは、いくつかのスキーマごとに100を超えるテーブルがありました。
しかし、自分の担当する機能はその中のたった数テーブルだけです。
毎回その数テーブルを探すのは時間がかかります。
そのため、自分の担当しているテーブルだけを一箇所に集めて作業したかったのです。
それが[お気に入り]です。