欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

关于关闭Java DB(Derby)时抛出异常的问题 博客分类: BlogJava2 DerbyJavaApacheJDBCJVM 

程序员文章站 2024-02-21 19:15:40
...

在前面两篇 http://blog.matrix.org.cn/comments/icess/Weblog/use_derby_with_clob_and  文章中,我简单介绍了如何使用Java DB操作数据,今天发现一个关于关闭数据库的问题, 就是在调用前面例子中的关闭数据库代码时候总是抛出异常 ,后来到文档里面看看 ,原来在关闭数据库时候, Derby总是抛出异常,我还以为是我那个地方写错了呢?

以前例子中没有显示异常信息 是应为 在关闭数据库的方法中没有使用 打印异常信息的语句, 如下

public void disconnect() {
        if(isConnected) {
            String dbUrl = getDatabaseUrl();
            dbProperties.put("shutdown", "true");
            try {
                DriverManager.getConnection(dbUrl, dbProperties);
            } catch (SQLException ex) {
             //ex.printStackTrace();   // 前面的例子没有该句, 如果加上该句,就会看的异常信息
            }
            isConnected = false;
        }
    }

 

所以,当大家看到下面的异常时候,不用担心 不是你的代码写错了,而是程序正确关闭数据库的提示(有点违背异常的设计初衷哦).

ERROR 08006: Database 'TestClob' shutdown.
 at org.apache.derby.iapi.error.StandardException.newException(Unknown Source)
 at org.apache.derby.impl.jdbc.TransactionResourceImpl.shutdownDatabaseException(Unknown Source)
 at org.apache.derby.impl.jdbc.EmbedConnection.<init>(Unknown Source)

...........
21:10 补充:

使用Java DB的最佳实践

Recommended practices

When developing Derby applications, create a single directory to hold your database or databases. Give this directory a unique name, to help you remember that:
  • All databases exist within a system.
  • System-wide properties affect the entire system, and persistent system-wide properties live in the system directory.
  • You can boot all the databases in the system, and the boot-up times of all databases affect the performance of the system.
  • You can preboot databases only if they are within the system. (Databases do not necessarily have to live inside the system directory, but keeping your databases there is the recommended practice.)
  • Once you connect to a database, it is part of the current system and thus inherits all system-wide properties.
  • Only one instance of Derby can run in a JVM at a single time, and only one instance of Derby should boot a database at one time. Keeping databases in the system directory makes it less likely that you would use more than one instance of Derby.
  • The error log is located inside the system directory.