3

アプリケーションのテスト目的でHSQLをメモリデータベースで使用し、メインデータベースとしてSQL Serverを使用しています。テストを行っているとき、HSQLデータベースにはSQLサーバーにあるのと同じデータが入力されています。今、特定のテストをしようとしていますデータベースからデータを取得するサービス (サービスが直接実行されている場合は MS サーバーにクエリを実行し、テストから呼び出された場合は HSQL データベースにクエリを実行します)

クエリを実行すると MS サーバーからのデータを表示できますが、同じクエリを実行している場合、HSQL Db はデータを返しません。ここでの私の推測は、HSQL DB にデータが入力されていないということです。HSQL DB にあるテーブルと、HSQLDB にデータがどのように入力されているかを調べる方法はありますか? データを確認したいのですが、 HSQL データベースがどのように作成され、どのデータがどのテーブルに格納されるかを確認するための GUI クライアントはありません。同じクライアントを持っていますか?それを使用して HSQL データベースに接続するにはどうすればよいですか?また、HSQL が SQL Server にあるもので適切に取り込まれていると仮定するのではなく、HSQL カバーの下で実際に起こっていることをどのように確認できますか?

何か提案は大いに役立ちますか?

4

3 に答える 3

10

ここに詳細な手順を追加します

サーバー モードでメモリのみの HSQLDB を実行するには?

1) 最新バージョンのhsqldb-2.2.5.zipをダウンロードします。

2) 解凍し、bin フォルダを開きます

3) cd ..\data @java -classpath ../lib/hsqldb.jar org.hsqldb.server.Server -database.0 mem:aname -dbname.0 aliasdb のように runServer.bat を変更し、runServer.bat をクリックします。サーバーを起動する

4) runManager.bat を実行し、サーバー タイプを選択し、URL jdbc:hsqldb:hsql://localhost/aliasdb,connect を入力し、いくつかのテスト テーブルとテスト データを作成します。

5) runManager.bat を再度実行して別のクライアントを起動し、サーバー タイプを選択し、URL jdbc:hsqldb:hsql://localhost/aliasdb を入力して接続します。作成したデータが表示されます。

于 2011-08-19T13:43:42.220 に答える
2

開発にHSQLDBを使用する最良の方法は、サーバーインスタンス(データを純粋にメモリに格納できる)を実行することです。サーバーの電源が入っている間は、GUIを含む複数のクライアントから接続して、データをテストおよび参照できます。

サーバーへのアクセスにはURL形式のjdbc:hsqldb:hsql:// localhostが使用され、サーバー自体は内部メモリデータベースとしてjdbc:hsqldb:mem:testを使用しています。サーバーは、最初に次のようなコマンドで起動する必要があります。

java -cp ../lib/hsqldb.jar org.hsqldb.Server -database.0 mem:test
于 2011-08-13T23:41:54.300 に答える
0

Derby In-memory-database と H2 in-memory-database を使用できます。それらは良いです.しかし、H2はより良いパフォーマンスを持っています. H2 には Web コンソール GUI があり、Derby には Eclipse プラグイン GUI があります。あなたはそれを試すことができます。私はプロジェクトでそれらを使用しました。H2 データベースには SO にタグがあり、その作成者が SO でサポートします。埋め込みモードの代わりにサーバーモードを使用するには、fredit が適していると思います。しかし、彼の URL は正しくないようです。少なくとも mem を使用する必要があります。Derby の場合、URL は jdbc:derby://myhost:1527/memory:myDB;create=true です。これは、H2 jdbc:h2:tcp://localhost/mem:db1 の URL の例です。

クライアントがネットワークから接続できるように、サーバーモードを使用する必要があります。注意が必要なことの1つは、メモリモードではメモリ内にあるため、Javaプロセスが終了するとJVMが存在せず、DB内のデータも失われることです。しかし、テストの場合、それは利点になります。テストデータをクリアする必要はありません。

H2 には、テスト目的のための非常に優れた機能があります。IBM DB2、Apache Derby、HSQLDB、MS SQL Server、MySQL、Oracle、および PostgreSQL と互換性のある SQL を実行する SQL サポートがあります。つまり、MS SQL Server で特別な SQL を使用しても、H2 で同じ結果を得ることができます。きっと気に入っていただけると思います。

リンク

HSQL がメモリ モードであることは知っていますが、使用したことはありません。

幸運を。

アップデート

代わりにテスト ケースにクエリを記述すれば、結果が返されると思います。私は自分のテストケースでこれをたくさんしました。テストケースでJDBC接続を作成する限り、埋め込みモードでも。これが不便だと感じる場合は、データ出力をファイルにダンプすることもできます。ただし、テスト ケースでデータを HSQL にロードする必要がある場合は、BeforeClass を使用して実行できます。これができない場合は、サーバーを使用する必要があります。モード。

hsql は、サーバー メモリ モードの JDBC url で少し異なるようです

詳細については、 http://hsqldb.org/doc/guide/guide.html#N108D2接続を参照して ください。

いくつかのサーバー構成に対処する必要があります。

@Rachel、メモリ内モードでサーバーモードをセットアップするのに役立つリンクを最後に見つけました。これを見てください。少し複雑です。

「メモリのみの HSQLDB をサーバー モードで実行する」

ノート

2 番目のリンクでは、正しく接続する方法が詳しく説明されていませんでした。だから最初のものを試してみてください。

于 2011-08-14T00:10:48.177 に答える