在前面兩篇 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.