共用方式為


逐步解說:使用資料來源組態精靈建立偶爾連接的應用程式

更新: 2008 年 7 月

從 Visual Studio 2008 SP1 開始,除了 [設定資料同步處理] 對話方塊之外,您還可以使用 [資料來源組態精靈] 來設定同步處理。本逐步解說提供逐步指示,說明如何在執行資料來源組態精靈時加入同步處理服務,以開發偶爾連接的應用程式。

「偶爾連接的應用程式」(Occasionally Connected Application) 是一種可能偶爾才會存取遠端資料的應用程式。因為這種應用程式不一定都會有存取權,所以會使用位於用戶端本機資料庫中的資料,並定期同步處理遠端資料庫和本機資料庫間的資料。本機與遠端資料庫間資料的同步處理,是透過 Microsoft Synchronization Services for ADO.NET (Microsoft.Synchronization.Data 命名空間) 執行的。一開始要建立此同步處理,可以使用 [加入新項目] 對話方塊將本機資料庫快取加入至應用程式,或執行 [資料來源組態精靈]。本逐步解說將執行後者。

在這個逐步解說中,您將執行下列工作:

  • 建立新的 Windows Form 應用程式。

  • 執行 [資料來源組態精靈] 建立和設定擁有本機資料庫快取的具型別資料集。

  • 建立 Windows Form 來顯示資料和確認同步處理。

  • 加入程式碼以啟始資料庫之間的同步處理。

  • 加入訊息方塊以顯示已同步處理之記錄數目的資訊。

必要條件

若要完成這個逐步解說,您需要下列項目:

  • 存取 SQL Server 版的 Northwind 範例資料庫。如需詳細資訊,請參閱 HOW TO:安裝範例資料庫

  • 已在執行 Visual Studio 的電腦上安裝 SQL Server Compact 3.5。

建立 Windows Form 應用程式

因為您要顯示 Windows Form 中的資料 (以確認同步處理是否成功),所以本逐步解說的第一個步驟就是建立一個新的 Windows Form 應用程式。

注意事項:

您的電腦可能會在下列說明中,以不同名稱或位置顯示某些 Visual Studio 使用者介面項目。您所擁有的 Visual Studio 版本以及使用的設定會決定這些項目。如需詳細資訊,請參閱 Visual Studio 設定

若要建立新的 Windows Form 應用程式

  1. 從 [檔案] 功能表中,建立新專案。

  2. 將專案命名為 OCSWalkthrough2。

  3. 按一下 [Windows Form 應用程式] 範本,然後按一下 [確定]。如需詳細資訊,請參閱建立 Windows 架構的應用程式

    OCSWalkthrough2 專案已建立,且加入至 [方案總管]。

建立包含本機資料庫快取的資料來源

由於本逐步解說將示範如何使用 [資料來源組態精靈] 將同步處理服務加入至應用程式,下一步就是要啟動精靈。這個步驟會啟動精靈,並根據 Northwind 範例資料庫的 Customers 和 Orders 資料表建立資料集。當您選擇要加入資料集的資料庫資料表時,會選取啟用本機資料快取的選項。

若要建立包含本機資料庫快取的資料來源

  1. 在 [資料] 功能表上,請按 [顯示資料來源]。

  2. 在 [資料來源] 視窗中,按一下 [加入新資料來源],啟動 [資料來源組態精靈]。

  3. 保留 [選擇資料來源類型] 頁面上已選取的 [資料庫] 預設值,然後按 [下一步]。

  4. 在 [選擇資料連接] 頁面上,執行下列其中一個步驟:

    • 如果下拉式清單中有提供 Northwind 範例資料庫之 SQL Server 版本的資料連接,請選取這個資料連接。

      -或-

    • 按一下 [新增連接] 開啟 [選擇資料來源] 或 [新增/修改連接] 對話方塊,然後建立 Northwind 資料庫之 SQL Server 版本的新連接。如需詳細資訊,請參閱新增/修改連接對話方塊 (一般)

  5. 如果資料庫需要密碼,請選取選項以輸入機密資料,然後按一下 [下一步]。

  6. 在 [將連接字串儲存到應用程式組態檔] 頁面上,按一下 [下一步]。

  7. 在 [選擇您的資料庫物件] 頁面上,展開 [資料表] 節點。

  8. 選取 [Customers] 資料表。

  9. 選取 [啟用本機資料庫快取]。

  10. 按一下 [選擇您的資料庫物件] 頁面上的 [下一步]

  11. 在 [選擇要快取的資料表] 頁面上選取 [Customers] 資料表。

    注意事項:

    保留 [同步處理模式] 的 [累加] 預設值。累加模式只會同步處理自上次同步處理以來在伺服器上所做的變更。快照模式則會以伺服器上的目前資料表取代整個本機快取的資料表。不論選取的模式為何,整個資料表一開始都會載入本機資料庫快取,因此目前資料一定是完整的。

  12. 按一下 [完成]。

  13. 如果其中一個本機快取資料表的同步處理模式設定為 [第一次同步處理之後新的及累加的變更],則需要對 SQL Server 資料庫進行更新,而且 [產生 SQL 指令碼] 對話方塊也會開啟。預設會同時選取對話方塊中的兩個選項:

    • [為累加的變更更新伺服器]。選取這個選項可以自動更新伺服器,以便在關閉這個對話方塊之後立即啟用遞增式同步處理。

    • [將 SQL 指令碼儲存在專案中供爾後使用]。選取這個選項可以將產生的 SQL 指令碼加入至專案,使您稍後可以在 SQL Server 資料庫上執行這些指令碼。專案中還會產生並加入復原指令碼。

  14. 按一下 [確定]。

啟用應用程式中的同步處理

在前述步驟完成執行 [資料來源組態精靈] 之後,便已設定了資料同步處理。您的應用程式現在包含下列內容:

  • Northwind 資料庫本機版本 (Northwind.sdf)。

  • 資料同步處理設定檔 (NorthwindCache.sync)。

  • 由 [資料來源組態精靈] 產生的具型別資料集 NorthwindDataSet.xsd。其中包含從本機資料庫填入資料的 [Customers] 資料表。

    初始同步處理會先執行,而本機資料庫快取中的 [Customers] 資料表會與伺服器資料庫同步處理。換句話說,本機 SQL Server Compact 3.5 資料庫 (Northwind.sdf) 中的 [Customers] 資料表會以目前在伺服器上資料庫的 [Customers] 資料表中的資料填入。

  • [SQLScripts] 資料夾內包含指令碼,可用於建立追蹤資料行和已刪除項目的資料表,另外還包含追蹤伺服器上之變更所需的觸發程序。

  • [SQLUndoScripts] 資料夾內含指令碼,可用於移除追蹤資料行、已刪除項目的資料表,以及加入至伺服器的必要觸發程序。

    注意事項:

    只有當伺服器需要進行修改時,才會建立 SQL 指令碼。如果伺服器已經有已刪除的項目資料表和追蹤資料行,則不會建立指令碼。

  • 下列 Microsoft Synchronization Services for ADO.NET DLL 的參考:

    • Microsoft.Synchronization.Data

    • Microsoft.Synchronization.Data.Server

    • Microsoft.Synchronization.Data.SqlServerCe

將同步處理功能加入至應用程式

在您設定資料同步處理後,還是必須將同步處理功能加入至應用程式中。更精確的說,您必須加入會啟始同步處理程序的程式碼。因此,您必須將控制項加入至表單,以顯示資料並啟動同步處理程序。

首先,您要將 [Customers] 節點從 [資料來源] 視窗拖曳至表單,以加入 DataGridView 控制項。DataGridView 會顯示本機資料庫快取 (專案中的 Northwind.sdf 資料庫) 中的 [Customers] 資料表,如此一來您便能確認本機與遠端資料庫是否正在執行資料同步處理。您也要加入按鈕以啟動同步處理程序。

若要建立資料繫結表單以初始化並確認資料同步處理

  1. 從 [資料來源] 視窗,將 [客戶] 節點拖曳至 [Form1]。

  2. 從 [工具箱] 將 [Button] 控制項拖曳到 [Form1] 內。將按鈕的 [Name] 屬性設定為 [SynchronizeButton],[Text] 屬性設定為 [Synchronize Now]。

  3. 按兩下 [開始同步處理] 按鈕,以建立按鈕 Click 事件處理常式,並在 [程式碼編輯器] 中開啟表單。

  4. 加入程式碼以啟動同步處理程序,然後將 [Customers] 資料表重填至資料集中。事件處理常式中的程式碼應該類似下列程式碼:

    注意事項:

    本文稍後將說明宣告 syncStats 變數的程式碼行。

    ' Call the Synchronize method to synchronize
    ' data between local and remote databases.
    Dim syncAgent As NorthwindCacheSyncAgent = New NorthwindCacheSyncAgent()
    Dim syncStats As Microsoft.Synchronization.Data.SyncStatistics = _
        syncAgent.Synchronize()
    
    ' After synchronizing the data, refill the
    ' table in the dataset.
    Me.CustomersTableAdapter.Fill(NorthwindDataSet.Customers)
    
    // Call the Synchronize method to synchronize
    // data between local and remote databases.
    NorthwindCacheSyncAgent syncAgent = new NorthwindCacheSyncAgent();
    Microsoft.Synchronization.Data.SyncStatistics syncStats;
    syncStats = syncAgent.Synchronize();
    // After synchronizing the data, refill the
    // table in the dataset.
    this.customersTableAdapter.Fill(this.northwindDataSet.Customers);
    

測試應用程式

若要測試應用程式

  1. 按 F5。

  2. 在應用程式執行時,使用 [伺服器總管]/[資料庫總管] (或其他資料庫管理工具) 連接至遠端伺服器資料庫並修改部分資料錄。

    1. 在 [伺服器總管]/[資料庫總管] 中,找出遠端資料庫伺服器上的 [Customers] 資料表 (不是 Northwind.sdf 的連接)。

    2. 以滑鼠右鍵按一下 [Customers] 資料表,然後按一下 [顯示資料表資料]。

    3. 修改一筆或多筆記錄並認可變更(巡覽修改過的資料列)。

  3. 返回至表單並按一下 [開始同步處理]。

  4. 確認遠端資料庫的修改已同步處理至本機資料庫,並顯示在表單上。

  5. 關閉表單(停止偵錯)。

擷取同步處理的資訊

當您呼叫 Synchronize 方法時,不只是初始化同步處理程序。Synchronize 方法也會傳回 SyncStatistics 物件,您可以用來存取同步處理的相關資訊。

若要存取同步處理統計資料

  • 在 [程式碼編輯器] 中開啟 [Form1],然後將下列程式碼加入至 SynchronizeButton_Click 事件處理常式的結尾,即前述步驟中加入的程式碼之下:

        MessageBox.Show("Changes downloaded: " & _
    syncStats.TotalChangesDownloaded.ToString)
    
    MessageBox.Show("Changes downloaded: " +
        syncStats.TotalChangesDownloaded.ToString());
    

測試應用程式

若要測試應用程式

  1. 按 F5。

  2. 在應用程式執行時,使用 [伺服器總管]/[資料庫總管] (或其他資料庫管理工具) 連接至遠端伺服器資料庫並修改部分資料錄。

    1. 在 [伺服器總管]/[資料庫總管] 中,找出遠端資料庫伺服器上的 [Customers] 資料表 (不是 Northwind.sdf 的連接)。

    2. 以滑鼠右鍵按一下 [Customers] 資料表,然後按一下 [顯示資料表資料]。

    3. 修改一筆或多筆記錄並認可變更(巡覽修改過的資料列)。

  3. 返回至表單並按一下 [開始同步處理]。

  4. 隨即會出現一個訊息方塊,內含有關同步處理記錄的資訊。

  5. 確認遠端資料庫的修改已同步處理至本機資料庫,並顯示在表單上。

後續步驟

視應用程式的需求而定,您在應用程式中設定本機資料庫快取之後,可能還要執行幾個步驟。例如,您可以進行下列作業讓這個應用程式發揮更強的功能:

請參閱

工作

逐步解說:將偶爾連接的用戶端應用程式與本機資料庫一起部署

概念

偶爾連接的應用程式概觀

SQL Server Compact 3.5 和 Visual Studio

變更記錄

日期

記錄

原因

2008 年 7 月

已加入主題。

SP1 功能變更。