WEB开发网
开发学院软件开发Java 建立一个 Derby 日历,第 3 部分: 使用事务和锁定... 阅读

建立一个 Derby 日历,第 3 部分: 使用事务和锁定(下)

 2010-04-19 00:00:00 来源:WEB开发网   
核心提示: 修改应用程序:CalendarFrame 现在将其结合在一起,应用程序的主体,建立一个 Derby 日历,第 3 部分: 使用事务和锁定(下)(4),包括每个 GUI 元素,都在 CalendarFrame 类中,Database 是一个工具类,提供了常量和必要的函数, 整个应用程序自从 第 2

修改应用程序:CalendarFrame

现在将其结合在一起。应用程序的主体,包括每个 GUI 元素,都在 CalendarFrame 类中。

整个应用程序

自从 第 2 部分 以后,该应用程序已经几经修改,更容易使用和维护了。一些变化对最终用户是可见的,另一些则不然。主要的变化包括外观上的变化,增加了更便于选择日期的日历选择器。另外,我们已经看到,该应用程序现在增加了可编辑的表格,用户可以修改已有事件的信息。

其他变化对终端用户就不那么明显了。比如,早期版本在每次修改(比如增加记录)被添加到数据库中时都要连接到数据库。现在当用户打开应用程序时建立连接,并在用户会话中一直保持该连接。

为了便于维护,连接现在由单独的类处理。

Database 类

严格地说,Database 是一个工具类,提供了常量和必要的函数,比如返回其他部分使用的 Connection(参见 清单 20)。

清单 20. Database 类

   import java.sql.Connection; 
import java.sql.DriverManager; 
import java.sql.SQLException; 
import java.sql.Statement; 
 
class Database { 
 
  private static final String EMBEDDED_DRIVER = 
           "org.apache.derby.jdbc.EmbeddedDriver"; 
  private static final String NETWORKED_DRIVER = 
            "org.apache.derby.jdbc.ClientDriver"; 
  private static final String PROTOCOL = "jdbc:derby"; 
  private static final String EMBEDDED_DB = "c:/derby/calendar"; 
  private static final String NETWORK_DB = 
              "//localhost:1527/c:/derby/calendar"; 
  public static final int EMBEDDED = 1; 
  public static final int NETWORKED = 2; 
 
  static Connection getConnection(int DB_TYPE) throws Exception { 
   return getConnection(null, DB_TYPE); 
  } 
 
  static Connection getConnection(String options, int DB_TYPE) 
     throws Exception { 
    
   String url = PROTOCOL + ':'; 
 
   if (DB_TYPE == EMBEDDED) { 
     url += EMBEDDED_DB; 
     Class.forName(EMBEDDED_DRIVER).newInstance(); 
   } else if (DB_TYPE == NETWORKED) { 
     url += NETWORK_DB; 
     Class.forName(NETWORKED_DRIVER).newInstance(); 
   } 
 
   if (options != null) { 
     url += ';' + options; 
   } 
   return DriverManager.getConnection(url); 
  } 
 
  public static void closeConnection(Connection conn) { 
   if (conn == null) { 
     return; 
   } 
    
   try { 
     conn.close(); 
     DriverManager.getConnection("jdbc:derby:;shutdown=true"); 
   } catch (SQLException se) { 
     //se.printStackTrace(); 
   } 
  } 
 
  public static void createTableIfNotExists() { 
   Connection conn = null; 
   try { 
     conn = Database.getConnection("create=true", EMBEDDED); 
     Statement st = conn.createStatement(); 
     st.executeUpdate("create table Event (id INT GENERATED " 
           + "ALWAYS AS IDENTITY, title VARCHAR(50), " 
           + "description VARCHAR(255), remindersTo " 
           + "VARCHAR(255), eventMonth INT, eventDay INT, " 
           + "eventYear INT)"); 
   } catch (Exception e) { 
     // e.printStackTrace(); 
   } finally { 
     Database.closeConnection(conn); 
   } 
  } 
}

上一页  1 2 3 4 5 6 7 8 9  下一页

Tags:建立 一个 Derby

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接