AsanDatabaseBrowser
AsanDatabaseBrowserを実行している様子

起動方法

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

起動直後の画面

最初に起動した直後は、利用可能なメニューは [データベース接続を追加] 程度しかありません。
従って、次にすべきことは [データベース接続を追加] することです。
マニュアルがなくても直感で操作できるように工夫しています。

データベース接続を追加

メニューの [データベース接続を追加] を選択すると以下の [データベース接続を追加] ダイアログが開きます。

[データベース接続を追加] ダイアログ

マウスを各コンポーネントに近づけると、ほとんどの箇所でツールチップが表示されます。 ドキュメントを見なくても使えるように工夫しています。
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ウィンドウ

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を超えるテーブルがありました。 しかし、自分の担当する機能はその中のたった数テーブルだけです。 毎回その数テーブルを探すのは時間がかかります。 そのため、自分の担当しているテーブルだけを一箇所に集めて作業したかったのです。 それが[お気に入り]です。