日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

利用NetBeans的Visual Web Pack用拖拉方式建立

系統(tǒng) 2365 0

執(zhí)行插入、更新和刪除操作

<!-- END VNV3 PAGETITLE, two-level variation --><!-- BEGIN WRAPPER TABLE, 2 COLUMN, MAIN/RIGHT --><!-- BEGIN CENTRAL COLUMN COMPONENTS --><!--startindex--><!-- ============ --><!-- MAIN CONTENT --><!-- ============ --> <!-- BEGIN VCD4 BYLINE AND TOOLS -->
2006 年 12 月 [修訂號:V1-1]
<!-- END VCD4 BYLINE AND TOOLS --><!-- BEGIN VCD1 OVERVIEW COMPONENT -->

本教程介紹了如何使用 NetBeans Visual Web Pack 5.5 構(gòu)建一個可以創(chuàng)建、檢索、更新和刪除數(shù)據(jù)庫行的 Web 應(yīng)用程序。該應(yīng)用程序提供一個主數(shù)據(jù)的下拉列表以及一個同步的詳細(xì)信息表。該應(yīng)用程序的用戶可以在詳細(xì)信息表及其關(guān)聯(lián)數(shù)據(jù)庫中添加、更新和刪除記錄。

本教程使用了其他基礎(chǔ)教程中介紹的一些概念。如果您不具備 IDE 及其設(shè)計組件的基本知識,請考慮首先閱讀基礎(chǔ)教程,如 NetBeans Visual Web Pack 5.5 入門指南 使用數(shù)據(jù)綁定組件訪問數(shù)據(jù)庫

<!-- END VCD1 OVERVIEW COMPONENT --><!-- BEGIN VCD5 ANCHOR LINKS COMPONENT -->

目錄

- 創(chuàng)建項目
- 添加插入功能
- 修改頁面以保存行集
- 添加刪除功能
- 添加恢復(fù)功能
- 小結(jié)
<!-- END VCD5 ANCHOR LINKS COMPONENT -->

本教程將使用以下資源

NetBeans Visual Web Pack 5.5 可以與所有支持的服務(wù)器以及 Java EE 1.4 和 Java EE 5 平臺配合使用。本教程向您介紹了 Visual Web Pack 的各種功能,這些功能需要利用下表中帶有復(fù)選標(biāo)記的資源。有關(guān)支持的服務(wù)器和 Java EE 平臺的詳細(xì)信息,請參見 NetBeans Visual Web Pack 5.5 安裝說明

應(yīng)用服務(wù)器 Sun Java System Application Server 9
Tomcat
JBoss
BEA WebLogic
JavaServer Faces 組件/
Java EE 平臺
1.2/Java EE 5*
1.1/J2EE 1.4
Travel 數(shù)據(jù)庫 必需
BluePrints AJAX 組件庫 不是必需的

* 該教程發(fā)布時,只有 Sun Java System Application Server 支持 Java EE 5。

<!-- END RESOURCE MATRIX --><!-- BEGIN EXAMPLES BOX --><!-- <table border="0" cellpadding="2" cellspacing="0"> <tr> <td> <div class="headerpadding2"><b>Example used in this tutorial</b></div> </td> </tr> <tr valign="top"> <td> <div class="headerpadding2"> &raquo;&nbsp;<a href="inserts_updates_deletes/insert_update_delete_ex.zip">insert_update_delete_ex.zip (zip)</a> </div> </td> </tr> </table> --><!-- END CODE EXAMPLES BOX -->

創(chuàng)建項目

在本教程中,將創(chuàng)建包含一個頁面的 Web 應(yīng)用程序。您可以先從設(shè)計頁面布局入手,該頁面包含一個人名及其相應(yīng)的行程,如下圖所示。

<!-- BEGIN FIGURE COMPONENT -->
圖 1 :初始頁面布局
<!-- END FIGURE COMPONENT -->
設(shè)計頁面
  1. 創(chuàng)建一個新的 Visual Web 應(yīng)用程序,并將其命名為 InsertUpdateDelete
  2. 將一個“下拉列表”組件從組件面板的“基本”類別拖動到該頁的左上角。在“屬性”窗口中,將其 id 屬性更改為 personDD
  3. 將一個“消息組”組件從組件面板的“基本”類別拖放到下拉列表的右側(cè)。

    “消息組”組件可用來顯示驗證錯誤和轉(zhuǎn)換錯誤,以及由 info() error() 方法寫入到 Java Server Faces 上下文的消息。如果需要調(diào)試項目,這些消息將會非常有用。
  4. 將一個“表”組件放在這兩個組件的下方。

配置下拉列表
  1. 打開“運行環(huán)境”窗口,展開“數(shù)據(jù)庫”節(jié)點并檢查是否已連接 TRAVEL 數(shù)據(jù)庫。

    如果 TRAVEL 數(shù)據(jù)庫的 jdbc 節(jié)點標(biāo)記顯示為連接中斷,并且無法展開該節(jié)點,則表明 IDE 未連接該數(shù)據(jù)庫。要連接 TRAVEL 數(shù)據(jù)庫,請右鍵單擊 TRAVEL 數(shù)據(jù)庫的 jdbc 節(jié)點,然后從彈出式菜單中選擇“連接”。如果出現(xiàn)“連接”對話框,請輸入 travel 作為口令,然后單擊“確定”。如果看不到 TRAVEL 數(shù)據(jù)庫的 jdbc 節(jié)點,請參見 NetBeans Visual Web Pack 5.5 安裝說明 以了解如何為 IDE 提供可用的數(shù)據(jù)庫。
  2. 展開 TRAVEL 數(shù)據(jù)庫的 jdbc 節(jié)點,然后展開“表”節(jié)點。

    注意: 在本教程的其余部分中,將 TRAVEL 數(shù)據(jù)庫的 jdbc 節(jié)點稱為 "Travel" 節(jié)點。
  3. 將 "PERSON" 節(jié)點拖動到可視設(shè)計器的下拉列表上。

    “概要”窗口的 "Page1" 部分中將顯示 "personDataProvider" 節(jié)點,"SessionBean1" 部分中將顯示 "personRowSet" 節(jié)點。
  4. 右鍵單擊“下拉列表”組件,然后從彈出式菜單中選擇“更改時自動提交”。

    此設(shè)置使得每當(dāng)您從列表中選擇新值時,則會將該頁面發(fā)送到服務(wù)器。
  5. 右鍵單擊下拉列表,然后從彈出式菜單中選擇“配置虛擬表單”。

    在出現(xiàn)的對話框中,請注意 personDD 顯示在窗口的左上角中,這表明下拉列表已被選定。
  6. 單擊“新建”。在“名稱”列中輸入 person 。雙擊“參與”列下面的字段,并將其設(shè)置為“是” ,然后對“提交”列執(zhí)行相同的操作,如下圖所示。

    <!-- BEGIN FIGURE COMPONENT -->
    圖 2 :配置虛擬表單
    <!-- END FIGURE COMPONENT -->
    通過使用虛擬表單,應(yīng)用程序可避免對表中的數(shù)據(jù)進行不必要的驗證。
  7. 單擊“確定”。
  8. 單擊可視設(shè)計器工具欄中的“顯示虛擬表單”按鈕,如圖 3 所示。

    通過查看虛擬表單,您可以看到可視設(shè)計器中的組件與您已經(jīng)配置的任何虛擬表單之間的關(guān)系。

    <!-- BEGIN FIGURE COMPONENT -->
    圖 3 :顯示虛擬表單
    <!-- END FIGURE COMPONENT -->

配置表
<!-- Start Here with InsertUpdateDelete12-preTableConfig -->
  1. 將 "Travel" >“表”> "TRIP" 節(jié)點從“運行環(huán)境”窗口拖放到可視設(shè)計器中的“表”組件上。
  2. 右鍵單擊該表,然后從彈出式菜單中選擇“表布局”。

    該對話框顯示了您剛創(chuàng)建的 tripDataProvider 中可用的字段,并允許您控制要在表中顯示哪些字段。
  3. 使用 "<" 按鈕,從右側(cè)的“選定”列表中刪除 TRIP.TRIPID、TRIP.PERSONID 和 TRIP.LASTUPDATED,如下圖所示。

    圖 4 :將表綁定到數(shù)據(jù)提供器
    <!-- END FIGURE COMPONENT -->
  4. 單擊“選項”標(biāo)簽,并將標(biāo)題更改為 Trips Summary
  5. 單擊“確定”。

    現(xiàn)在,可視設(shè)計器中的“表”組件應(yīng)如下圖所示。請注意,如果未按下圖順序顯示各列,可通過重新打開“表布局”對話框,單擊“列”標(biāo)簽并使用“上移”和“下移”按鈕重新對其進行排列。

    <!-- BEGIN FIGURE COMPONENT -->
    圖 5 :Page1 表布局
    <!-- END FIGURE COMPONENT -->
  6. 在“概要”窗口中,右鍵單擊 "SessionBean1" 下的 "tripRowSet",然后從彈出式菜單中選擇“編輯 SQL 語句”。

    SQL 查詢編輯器將顯示在編輯區(qū)域中。
  7. 在窗口中心附近的網(wǎng)格區(qū)域,在 PERSONID 行中單擊鼠標(biāo)右鍵,然后選擇“添加查詢條件”,如下圖所示。

    <!-- BEGIN FIGURE COMPONENT -->
    圖 6 :添加查詢條件
    <!-- END FIGURE COMPONENT -->
  8. 在對話框中,將“比較”下拉列表設(shè)置為“= 等于”并選中“參數(shù)”單選按鈕,然后單擊“確定”。

    <!-- BEGIN FIGURE COMPONENT -->
    圖 7 :“添加查詢條件”對話框
    <!-- END FIGURE COMPONENT -->
    字符 "=?" 將出現(xiàn)在 PERSONID 的“條件”字段中,而條件 "WHERE TRAVEL.TRIP.PERSONID=?" 則出現(xiàn)在編輯器底部 SQL 窗格中的 SQL 語句結(jié)尾處。
  9. 關(guān)閉 tripRowSet 的 SQL 編輯器。

更改列組件

現(xiàn)在,將列內(nèi)容更改為可編輯的字段,以準(zhǔn)備實現(xiàn)將新行程插入到數(shù)據(jù)庫中的功能。為此,可通過在“表”組件中嵌套其他組件以利用其復(fù)合特性。
  1. 右鍵單擊“表”組件,然后選擇“表布局”。

    將打開“表布局”對話框。
  2. 在“列”標(biāo)簽中,從右側(cè)的“選定”列表中選擇 "TRIP.DEPDATE"。在對話框底部的“列詳細(xì)信息”區(qū)域中,將“組件類型”從“靜態(tài)文本”更改為“文本字段”,如下圖所示。

    <!-- BEGIN FIGURE COMPONENT -->
    圖 8 :更改列的外觀
    <!-- END FIGURE COMPONENT -->
  3. 對 TRIP.DEPCITY 和 TRIP.DESTCITY 執(zhí)行相同的操作。
  4. 在“選定”列表中選擇 "TRIP.TRIPTYPEID",然后將“組件類型”從“靜態(tài)文本”更改為“下拉列表”。
  5. 單擊“確定”。

    注意: 如果執(zhí)行上述步驟后表列太寬,則可以通過選擇每列中的第一個組件并拖動其選擇句柄來調(diào)整列的大小。
  6. 將 "Travel" >“表”> "TRIPTYPE" 節(jié)點拖動到“表”組件中的下拉列表上。

    此操作將創(chuàng)建 triptypeDataProvider
<!-- InsertUpdateDelete12-preEventInit.zip -->

為表配置虛擬表單

接下來,為表中的輸入組件創(chuàng)建一個虛擬表單。通過使用虛擬表單,可以確保在更改 personDD 后提交此頁時,不會對輸入組件進行驗證和轉(zhuǎn)換。用戶無論何時從下拉列表中選擇新人員,都會在表中顯示正確的信息。
  1. 在可視設(shè)計器中,使用 Ctrl 鍵的同時單擊“表”組件中的三個“文本字段”組件和一個“下拉列表”組件。右鍵單擊其中一個選定的組件,然后從彈出式菜單中選擇“配置虛擬表單”。
  2. 在“配置虛擬表單”對話框中,確保窗口左上角列出了三個文本字段和一個下拉列表。如果未按下圖所示的方式列出這些內(nèi)容,請關(guān)閉對話框,重新選擇它們,然后再試一次。如果已正確列出這些內(nèi)容,則單擊“新建”。
  3. 將新虛擬表單的名稱更改為 save ,將“參與”設(shè)置更改為“是”(如下圖所示),然后單擊“確定”以關(guān)閉窗口。

    <!-- BEGIN FIGURE COMPONENT -->
    圖 9 :為表元素配置虛擬表單
    <!-- END FIGURE COMPONENT -->

添加事件代碼和初始化代碼

現(xiàn)在,將 personDD 下拉列表與“表”組件相關(guān)聯(lián)以實現(xiàn)以下行為:當(dāng)用戶從列表中選擇某人時,表中則會顯示出此人的行程。
  1. 雙擊 personDD 下拉列表以創(chuàng)建值更改事件方法(將打開 Java 編輯器,并且插入點將位于該方法內(nèi))。
  2. 在值更改事件方法中,找到注釋行 // 待做事項:替換為您的代碼 。使用代碼樣例 1 中的粗體文本替換此行。

    <!-- BEGIN CODE SAMPLE COMPONENT -->
    代碼樣例 1:下拉列表事件處理程序
                       public void personDD_processValueChange(ValueChangeEvent event) {
                    
                      
           Object selectedPersonId = personDD.getSelected();
           try {
               personDataProvider.setCursorRow(
                       personDataProvider.findFirst("PERSON.PERSONID",
    				   selectedPersonId));
               getSessionBean1().getTripRowSet().setObject(1, selectedPersonId);
               tripDataProvider.refresh();
               form1.discardSubmittedValues("save");
           } catch (Exception e) {
               error("Cannot switch to person " + selectedPersonId);
               log("Cannot switch to person " + selectedPersonId, e);
           }
                    
                    
       }
    
                  
    <!-- END CODE SAMPLE COMPONENT -->
    位于 try 子句結(jié)尾處的 form1.discardSubmittedValues("save") 語句可確保每當(dāng)用戶從下拉列表中選擇新的人員時,將使用新的所選人員的相關(guān)信息替換當(dāng)前行程信息。請您回想一下,顯示行程信息的用戶界面元素都參與了名為 save 的虛擬表單。請注意,事件處理程序并不拋出異常,而是在 server.log 文件中記錄異常。事件處理程序還將調(diào)用 error 方法,當(dāng)出現(xiàn)錯誤時就會將消息顯示在“消息組”組件中。
  3. 在 Java 源代碼中滾動至 prerender() 方法(或者,如果愿意,請按 Ctrl-F 組合鍵以打開“查找”對話框并搜索 prerender )。將下面以粗體顯示的代碼添加到該方法中。

    <!-- BEGIN CODE SAMPLE COMPONENT -->
    代碼樣例 2:Prerender 方法
                    public void prerender() {
                    
                      
           if ( personDD.getSelected() == null ) {
               Object firstPersonId = null;
               try {
                   personDataProvider.cursorFirst();
                   firstPersonId = personDataProvider.getValue("PERSON.PERSONID");
                   personDD.setSelected(firstPersonId);
                   getSessionBean1().getTripRowSet().setObject(
                           1, firstPersonId);
                   tripDataProvider.refresh();
               } catch (Exception e) {
                   error("Cannot switch to person " +
                           firstPersonId);
                   log("Cannot switch to person " +
                           firstPersonId, e);
               }
           }
                    
                    
       }
    
                  
    <!-- END VCD7 CODE SAMPLE COMPONENT -->
  4. 在 Java 編輯器中單擊鼠標(biāo)右鍵,然后選擇“重新設(shè)置代碼格式”以便對代碼進行適當(dāng)?shù)呐帕小?

測試應(yīng)用程序 - 第 1 部分

在主工具欄上單擊“運行主項目”按鈕以生成、部署和運行項目。當(dāng) Web 瀏覽器呈現(xiàn)此頁面時,您會看到一些名字填充了下拉列表,并且表也由一些數(shù)據(jù)進行了填充。當(dāng)您從列表中選擇其他名字時,與該名字關(guān)聯(lián)的行程將會顯示在表中。

<!-- BEGIN FIGURE COMPONENT -->
圖 10 :部署的應(yīng)用程序,測試 1
<!-- END FIGURE COMPONENT -->

添加插入功能

<!-- UID-TP1.zip -->在此部分中,通過在數(shù)據(jù)庫中插入行集,實現(xiàn)將行程添加到表中的功能。首先,為表的文本字段提供“消息”組件。這些功能可以確保當(dāng)輸入不正確的信息時,用戶能夠看到錯誤消息。然后,在頁面中添加一個按鈕,以便用戶可以通過它將新行添加到數(shù)據(jù)緩沖區(qū)中。
  1. 在可視設(shè)計器中查看 Page1。
  2. 在組件面板的“基本”類別中,將“消息”組件分別拖動到表的前三列中最上面的文本字段上。
  3. 選擇第一個“消息”組件。在“屬性”窗口中,滾動至 for 屬性,然后從下拉列表中選擇 textField1 。只有當(dāng)消息與文本字段正確關(guān)聯(lián)時,消息文本才會顯示關(guān)聯(lián)信息,如圖 11 所示。
  4. 選擇第二個“消息”組件并將其 for 屬性設(shè)置為 textField2
  5. 將第三個“消息”組件的 for 屬性設(shè)置為 textField3

    <!-- BEGIN FIGURE COMPONENT -->
    圖 11 :將“消息”組件與文本字段關(guān)聯(lián)
    <!-- END FIGURE COMPONENT -->
  6. 在組件面板的“基本”類別中,將一個“按鈕”組件拖動到 Page1 上,并將它放置在“表”組件上方靠近第二列的頂部,如圖 12 所示。
  7. 將其 text 屬性由“ 按鈕 ”更改為 " Add Trip "。
  8. 在“屬性”窗口中,將按鈕的 id 屬性更改為 add
  9. 在可視設(shè)計器中,雙擊該按鈕以打開 Java 編輯器,插入點將位于該按鈕的事件處理程序中。
  10. 修改按鈕的事件代碼( add_action() 方法),使其如下所示:

    <!-- BEGIN CODE SAMPLE COMPONENT -->
    代碼樣例 3:添加行程操作的代碼
                    public String add_action() {
                    
                      
            try {
                RowKey rk = tripDataProvider.appendRow();
                tripDataProvider.setCursorRow(rk);
    
                tripDataProvider.setValue("TRIP.TRIPID", new Integer(0));
                tripDataProvider.setValue("TRIP.PERSONID", personDD.getSelected());
                tripDataProvider.setValue("TRIP.TRIPTYPEID", new Integer(1));
            } catch (Exception ex) {
                log("Error Description", ex);
                error(ex.getMessage());
            } 
                    
                    
             return null;
        }
    
                  
    <!-- END CODE SAMPLE COMPONENT -->
  11. 在 Java 編輯器中單擊鼠標(biāo)右鍵,然后選擇“修復(fù)導(dǎo)入”以解決“找不到 RowKey ”的錯誤。

    IDE 將在 Page1.java 的 import 語句塊中添加下列包:

    import com.sun.data.provider.RowKey;

測試應(yīng)用程序 - 第 2 部分

生成、部署和運行項目。當(dāng) Web 瀏覽器呈現(xiàn)此頁面時,將顯示 "Add Trip" 按鈕,如下圖所示。每次單擊該按鈕時,都會在表的底部附加一個新的空行。您可以編輯行中的信息,但由于尚未提供行集的保存機制,因此,從下拉列表中選擇其他名字時,所做的更改將會丟失。

<!-- BEGIN FIGURE COMPONENT -->
圖 12 :部署的應(yīng)用程序,測試 2
<!-- END FIGURE COMPONENT -->

修改頁面以保存行集

在此部分,您將在項目中添加第二個行集。該行集用于計算已使用的最大行程 ID。
  1. 在編輯器窗口中單擊 "Design" 以返回到可視設(shè)計器中的 Page1。
  2. 從“運行環(huán)境”窗口中選擇“數(shù)據(jù)庫”> "Travel" >“表”> "TRIP" 表,然后將它拖動到“概要”窗口中的 "SessionBean1" 節(jié)點上。

    <!-- BEGIN FIGURE COMPONENT -->
    圖 13 :將 TRIP 表拖動到 SessionBean1 上
    <!-- END FIGURE COMPONENT -->
    此操作將會打開“添加新的數(shù)據(jù)提供器”對話框。
  3. 單擊“創(chuàng)建 SessionBean1/tripRowSet1”單選按鈕,將數(shù)據(jù)提供器的名稱更改為 maxTripRowSet ,然后單擊“確定”。

    注意: 行集在對話框中出現(xiàn)了兩次。這是一個已知問題,請予以忽略。它不會影響本教程中的應(yīng)用程序。

    <!-- BEGIN FIGURE COMPONENT -->
    圖 14 :將新的數(shù)據(jù)提供器添加到 SessionBean1 中
    <!-- END FIGURE COMPONENT -->
    此操作將在 SessionBean1 中創(chuàng)建 maxTripDataProvider 和 maxTripRowSet。
  4. 在“概要”窗口中,雙擊 "SessionBean1" > "maxTripRowSet" 以打開查詢編輯器。在源代碼窗格(上數(shù)第三個窗格)中單擊鼠標(biāo)左鍵。刪除此處現(xiàn)有的 SQL 查詢,然后輸入以下查詢:
             SELECT MAX(TRAVEL.TRIP.TRIPID)+1 AS MAXTRIPID FROM TRAVEL.TRIP
          
    MAXTRIPID 值將用在 "Save" 按鈕(接下來,將添加此按鈕)的操作處理程序中。
  5. 關(guān)閉查詢編輯器。請注意,查詢編輯器的圖形編輯器不支持此查詢。如果您看到一個提示出現(xiàn)語法錯誤的警報對話框,可通過單擊“繼續(xù)”安全地將其關(guān)閉。

將用戶更改的內(nèi)容保存在數(shù)據(jù)庫中
  1. 將一個“按鈕”組件放在表的第一列上方。
  2. 將按鈕的 text 屬性由“按鈕” 更改為 " Save Changes "。
  3. 在“屬性”窗口中,將其 id 屬性更改為 save
  4. 右鍵單擊 "Save Changes" 按鈕,然后從彈出式菜單中選擇“配置虛擬表單”。
  5. 在“配置虛擬表單”對話框中,確保左上角的列表中顯示的是 save ,以便此窗口中的更改可以應(yīng)用于 "Save Changes" 按鈕。然后,選擇 save 虛擬表單,將“提交”值更改為“是”并單擊“確定”。
  6. 在可視設(shè)計器中,雙擊 "Save Changes" 按鈕以打開 Java 編輯器。在 Java 編輯器中,插入點將位于該按鈕的事件處理程序中。
  7. 修改該按鈕的事件代碼( save_action() 方法),使其如下所示:

    <!-- BEGIN CODE SAMPLE COMPONENT -->
    代碼樣例 4:保存操作的代碼
                        public String save_action() {
            
                    
                      try {
    
                // Get the next key, using result of query on MaxTrip data provider
                CachedRowSetDataProvider maxTrip =
    			   getSessionBean1().getMaxTripDataProvider();
                maxTrip.refresh();
                maxTrip.cursorFirst();
                int newTripId = ((Integer) maxTrip.getValue("MAXTRIPID")).intValue();
    
                // Navigate through rows with data provider
                if (tripDataProvider.getRowCount() > 0) {
                    tripDataProvider.cursorFirst();
                    do {
                        if (tripDataProvider.getValue("TRIP.TRIPID").equals
    					   (new Integer(0))) {
                            tripDataProvider.setValue("TRIP.TRIPID",
    						new Integer(newTripId));
                            newTripId++;
                        }
    
                    } while (tripDataProvider.cursorNext());
                };
                tripDataProvider.commitChanges();
            } catch (Exception ex) {
                log("Error Description", ex);
                error("Error :"+ex.getMessage());
            }
                    
                    
             return null;
        }
    
                  
    <!-- END CODE SAMPLE COMPONENT -->

測試應(yīng)用程序 - 第 3 部分

通過單擊“運行主項目”按鈕以生成、部署和運行項目。應(yīng)用程序?qū)⒖梢詫崿F(xiàn)以下功能:

  • 可以添加行程并進行保存。行程將會顯示在表中,并且在選擇其他人員后重新返回時,該行程仍然存在。
  • 可以編輯現(xiàn)有的行程信息,并保存所做的更改。
  • 如果在 "Date" 字段中輸入除日期之外的內(nèi)容,則應(yīng)用程序?qū)⑻峁┮粭l錯誤消息。
  • 在保存之前可以多處單擊 "Add Trip",這是一次添加多行的簡便方法。
  • 如果在保存之前切換到其他人員,則會丟失所有更新(包括在所添加的行上正在填寫的信息)。
  • 如果修改了某些值,然后單擊某個列標(biāo)題(使之按該列進行排序),則表組件會記住這些暫掛的更改,并在隨后可以保存這些更改。

添加刪除功能

<!-- InsertUpdateDelete12-TP3.zip -->

現(xiàn)在,將刪除功能添加到表中。利用此功能,用戶能夠通過從數(shù)據(jù)庫中刪除某行來刪除行程。在本教程中,"Delete" 按鈕的操作是即時的,并且從數(shù)據(jù)庫中刪除行時并不需要使用 "Save Changes" 按鈕。實際上,由于 "Delete" 按鈕的事件處理程序使用 commitChanges() 方法,因此它也像 "Save Changes" 按鈕一樣保存所有暫掛的更改。


向每行添加 "Delete" 按鈕
  1. 在可視設(shè)計器中,右鍵單擊“表”組件,然后從彈出式菜單中選擇“表布局”。

    將打開“表布局”對話框。
  2. 單擊“列”標(biāo)簽,然后單擊“新建”,將一個新列添加到表中。
  3. 在“選定”列表中選擇新列的名稱后,在“列詳細(xì)信息”區(qū)域中進行如下更改:

    1. 表頭文本和頁腳文本: <刪除“表頭文本”字段和“頁腳文本”字段中的任何缺省文本,使其保持空白>
    2. 組件類型: 按鈕
    3. 值表達式: Delete
    4. 寬度: <刪除任何缺省值,使其保持空白>
    5. 水平對齊: 居中
    6. 垂直對齊: 居中
    7. 單擊“確定”
  4. 選擇位于表中最上面的 "Delete" 按鈕,并在“屬性”窗口中將 id 屬性設(shè)置為 delete

添加事件代碼
  1. 雙擊 "Delete" 列中的第一個按鈕,將打開 Java 編輯器,且插入點位于 delete_action() 事件處理程序中。
  2. 更改 delete_action() 方法,使其如下所示:

    代碼樣例 5:刪除操作的代碼
                        public String delete_action() {
            
                    
                      form1.discardSubmittedValues("save");
            try {
                RowKey rk = tableRowGroup1.getRowKey();
                if (rk != null) {
                    tripDataProvider.removeRow(rk);
                    tripDataProvider.commitChanges();
                    tripDataProvider.refresh();}
            } catch (Exception ex) {
                log("ErrorDescription", ex);
                error(ex.getMessage());
            }
                    
                    
    
             return null;
        }
    
                  
    <!-- END CODE SAMPLE COMPONENT -->

測試應(yīng)用程序 - 第 4 部分

通過單擊“運行主項目”按鈕以生成、部署和運行項目。下圖顯示了運行的應(yīng)用程序。

部署后,您應(yīng)該可以從表中刪除行,進而將其從數(shù)據(jù)庫中刪除。刪除操作還會將所有暫掛的更改提交到數(shù)據(jù)庫中。

<!-- BEGIN FIGURE COMPONENT -->
圖 15 :測試應(yīng)用程序,第 4 部分
<!-- END FIGURE COMPONENT -->

添加恢復(fù)功能

<!-- InsertUpdateDelete12-TP4.zip -->

現(xiàn)在,將恢復(fù)功能添加到頁面中。使用此功能,用戶可以放棄其編輯的內(nèi)容,恢復(fù)為以前保存的數(shù)據(jù)。請注意,恢復(fù)功能并不能恢復(fù)已保存或已刪除的行;因為 "Save Changes" 和 "Delete" 按鈕會將更改提交到數(shù)據(jù)庫中。


添加 "Revert Changes" 按鈕
  1. 在可視設(shè)計器中,將一個“按鈕”組件從組件面板拖動到 Page1 上。將新的按鈕放在 "Add Trip" 按鈕的右側(cè)。
  2. 將按鈕的 text 屬性更改為 Revert Changes
  3. 在“屬性”窗口中,將“按鈕”組件的 id 屬性更改為 revert
  4. 雙擊 "Revert Changes" 按鈕,將打開 Java 編輯器,且插入點會位于 revert_action() 方法中。
  5. 將下面代碼樣例中以粗體顯示的代碼添加到 revert_action() 方法中。

    <!-- BEGIN CODE SAMPLE COMPONENT -->
    代碼樣例 6:恢復(fù)操作的代碼
                     public String revert_action() {
            
                    
                      form1.discardSubmittedValues("save");
            try {
                tripDataProvider.refresh();
    
            } catch (Exception ex) {
                log("Error Description", ex);
                error(ex.getMessage());
            }
                    
                    
             return null;
        }
    	
                  

配置虛擬表單

如果應(yīng)用程序使用目前的配置,則會出現(xiàn)一些不理想的行為。例如,如果用戶在現(xiàn)有行的第一列中輸入一個無效日期,然后單擊 "Add" 按鈕,操作將會失敗。由于日期轉(zhuǎn)換錯誤拒絕提交表單,因此不會將任何新行添加到表中。理想的行為是先處理表中的輸入字段,以便在忽略現(xiàn)有行的暫掛內(nèi)容的情況下添加新行。

同樣,當(dāng)用戶單擊 "Delete" 按鈕刪除行時,不論對該行或其他現(xiàn)有行進行了哪些編輯,都應(yīng)該刪除該行。而當(dāng)用戶單擊 "Revert" 按鈕時,其目的是放棄所有編輯的內(nèi)容,這又應(yīng)該忽略以上情況的編輯內(nèi)容。

為了確保用戶在單擊 "Add"、"Delete" 或 "Revert" 按鈕時提前對頁面上的輸入字段進行處理(包括驗證檢查),可以讓這些按鈕提交虛擬表單。在本例中,您可以讓所有三個按鈕都提交相同的虛擬表單,因為它們都需要提交一個無任何參與組件的虛擬表單。
  1. 在可視設(shè)計器中,選中 "Add"、"Delete" 和 "Revert" 按鈕,單擊鼠標(biāo)右鍵,然后從彈出式菜單中選擇“配置虛擬表單”。

    在“配置虛擬表單”窗口中, add delete revert 應(yīng)該出現(xiàn)在其左上角,以表示這些按鈕處于選定狀態(tài)。
  2. 在“配置虛擬表單”窗口中,單擊“新建”,將新的虛擬表單命名為 add/delete/revert ,然后將“提交”設(shè)置為“是”。單擊“確定”。

    <!-- BEGIN FIGURE COMPONENT -->
    圖 16 :為 "Add"、"Revert" 和 "Delete" 按鈕配置虛擬表單
    <!-- END FIGURE COMPONENT -->

測試應(yīng)用程序 - 第 5 部分

通過單擊“運行主項目”按鈕以生成、部署和運行項目。下面的圖 17 顯示了正在運行的應(yīng)用程序。

部署后,程序可執(zhí)行以下功能:

  • 從下拉列表中選擇一個名字時,會顯示出此人的行程摘要。
  • 編輯現(xiàn)有的行程信息,并將更改保存到數(shù)據(jù)庫中。
  • 在表中添加行,填寫行程字段,并將更改保存到數(shù)據(jù)庫中。
  • 從表中(同時從數(shù)據(jù)庫中)刪除行。
  • 放棄編輯內(nèi)容,并恢復(fù)為數(shù)據(jù)庫中最近保存的數(shù)據(jù)。

<!-- BEGIN FIGURE COMPONENT -->
圖 17 :測試應(yīng)用程序,第 5 部分
<!-- END FIGURE COMPONENT -->

小結(jié)

在本教程中,您將表組件、文本字段組件和下拉列表組件與數(shù)據(jù)庫中的信息進行了關(guān)聯(lián);此外,為組件設(shè)置了屬性,添加了 prerender 和事件代碼,從而可以插入、更新和刪除數(shù)據(jù)庫中的數(shù)據(jù)并恢復(fù)所做的更改。您還使用了虛擬表單,這使得應(yīng)用程序使用一個頁面即可,并且提交數(shù)據(jù)時繞過了有效性檢查。

FROM:http://www.netbeans.org/kb/55/vwp-inserts_updates_deletes_zh_CN.html

利用NetBeans的Visual Web Pack用拖拉方式建立操作數(shù)據(jù)庫的示例


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 陆丰市| 鲁甸县| 巢湖市| 思南县| 如东县| 将乐县| 禹城市| 分宜县| 永和县| 青海省| 卫辉市| 白银市| 固安县| 福建省| 洛浦县| 盘锦市| 喜德县| 体育| 沛县| 衡南县| 揭东县| 那曲县| 长子县| 克东县| 阜新市| 阿拉善右旗| 邳州市| 建湖县| 德清县| 车险| 吕梁市| 隆尧县| 民丰县| 宝丰县| 屏南县| 二手房| 南安市| 乐都县| 蒙城县| 镇平县| 繁峙县|