Share via


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

本逐步解說提供逐步指示,說明如何在執行資料來源組態精靈時加入 Synchronization Services,以開發偶爾連接的應用程式。

「偶爾連接的應用程式」(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 專案已建立,且加入至 [方案總管]。

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

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

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

  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] 屬性設定為 [開始同步處理]。

  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