如何正确关闭Derby内存数据库
我正在使用derby作为嵌入式数据库。此外,我在单元测试中使用了它的内存数据库选项。
我不知道如何正确关闭(快速查看代码)
Derby数据库。我相信我有它适用于标准数据库,但是在内存数据库中尝试类似代码时遇到了不同的异常。
我将省略细节,如果需要其他感觉,我将添加它们。
基本上,我试图以以下两种方式关闭数据库,在这种方式中,内存数据库始终被称为“ eh”:
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程序(Java代码)。
回答:
XJ015(具有SQLCODE
50000)是SQLSTATE
系统完全关闭的预期(成功)。SQLCODE
另一方面,期望SQLSTATE
仅关闭单个数据库的08006(具有45000)。
DriverManager.getConnection("jdbc:derby:;shutdown=true");
关闭整个系统,结果为XJ015
。
以上是 如何正确关闭Derby内存数据库 的全部内容, 来源链接: utcz.com/qa/417054.html