組み込みデータベースとして derby を使用しています。さらに、単体テストにはメモリ内データベース オプションを使用しています。
私が理解できないのは、Derby データベースを適切にシャットダウンする方法(コードをざっと見てみる)です。標準データベースでは機能していると思いますが、インメモリ データベースで同様のコードを実行しようとすると、別の例外が発生します。
詳細は割愛しますが、他の感触が必要な場合は追加します.
基本的に、インメモリ データベースが一貫して "eh" と呼ばれる次の 2 つの方法でデータベースをシャットダウンしようとしています。
DriverManager.getConnection("jdbc:derby:memory:eh;shutdown=true");
それから:
DriverManager.getConnection("jdbc:derby:eh;shutdown=true");
前者では例外が発生しますが、予期されたものではありません。詳細は次のとおりです。
java.sql.SQLNonTransientConnectionException: データベース 'memory:eh' がシャットダウンされました。
後者の結果は
java.sql.SQLException: データベース 'eh' が見つかりません。
私が把握できたことに基づいて、私たちは を望んでSQLException
いますが、受け取ったものは望んでいません。一方、SQLNonTransientConnectionException
エラーはより適切に見えますが、適切なタイプではなく (から派生しSQLException
ていますが)、適切な状態コードもありません。州コードは次のようになります08006
。
私が持っているコード例はSQLException
、SQL 状態が「XJ015」であることを示しています。
注: 私が参照している例は次のとおりです: WwdEmbedded Program ( Java Code )。