逐步解說:建立偶爾連接的應用程式
「偶爾連接的應用程式」(Occasionally Connected Application) 是一種可能偶爾才會存取遠端資料的應用程式。 因為這種應用程式不一定都會有存取權,所以會使用位於用戶端上本機資料庫中的資料,並定期同步處理遠端資料庫和本機資料庫上的資料。 本機與遠端資料庫之間資料的同步處理,是透過 Microsoft Synchronization Services for ADO.NET 執行的 (Microsoft.Synchronization.Data 命名空間)。 這個同步處理是在 [設定資料同步處理] 對話方塊中設定的。
除了 [設定資料同步處理] 對話方塊之外,您還可以使用 [資料來源組態精靈] 來設定同步處理。 在設定具型別資料集期間,在精靈的 [選擇您的資料庫物件] 頁面中,選取 [啟用本機資料庫快取] 選項。 如需詳細資訊,請參閱逐步解說:使用資料來源組態精靈建立偶爾連接的應用程式。
本逐步解說提供逐步指示,說明如何開發偶爾連接的應用程式。
在這個逐步解說中,您將執行下列工作:
建立新的 Windows Form 應用程式。
將新的 [本機資料庫快取] 加入至專案。
將同步處理設定為執行下列工作:
設定伺服器資料庫的資料連接。
設定同步處理以建立新的本機資料庫。
資料庫中選取您要與應用程式同步處理的資料表。
將 DataGridView 控制項加入至表單,以顯示本機資料庫中的資料。
加入程式碼以啟始資料庫之間的同步處理。
加入訊息方塊以顯示已同步處理之記錄數目的資訊。
必要條件
若要完成這個逐步解說,您需要下列項目:
存取 SQL Server 版的 Northwind 範例資料庫。 如需詳細資訊,請參閱 HOW TO:安裝範例資料庫。
SQL Server 精簡安裝在執行 Visual Studio 的電腦上。
建立 Windows Form 應用程式
因為您要顯示 Windows Form 中的資料 (以確認同步處理是否成功),所以本逐步解說的第一個步驟就是建立一個新的 Windows Form 應用程式。
注意事項 |
---|
在下列指示的某些 Visual Studio 使用者介面項目中,您的電腦可能會顯示不同的名稱或位置:您所擁有的 Visual Studio 版本以及使用的設定會決定這些項目。如需詳細資訊,請參閱 Visual Studio 設定。 |
若要建立新的 Windows Form 應用程式
從 [檔案] 功能表中,建立新專案。
將專案命名為 OCSWalkthrough。
注意事項 Visual Basic 和 C# 專案支援 [設定資料同步處理] 對話方塊,所以,請以其中一種語言建立新專案。
按一下 [Windows Form 應用程式] 範本,然後按一下 [確定]。 如需詳細資訊,請參閱開發用戶端應用程式。
OCSWalkthrough 專案已建立,且加入至 [方案總管]。
將同步處理檔案加入至專案
建立偶爾連接的應用程式的下一步,就是在用戶端上加入 (或建立) 本機資料庫。 若要加入可與遠端資料庫同步處理的本機資料庫,您要將 [本機資料庫快取] 範本加入至專案。 使用 [加入新項目] 對話方塊,將本機資料庫快取檔案 (.sync 檔案) 加入至專案。
若要將同步處理設定檔加入至專案
在 [專案] 功能表上,按一下 [加入新項目]。
按一下 [本機資料庫快取] 範本,並在 [名稱] 方塊中輸入 NorthwindCache.sync。
按一下 [加入]。
NorthwindCache.sync 檔案已加入至 [方案總管],且 [設定資料同步處理] 對話方塊隨即出現。
設定資料同步處理
資料同步處理的設定包括下列工作:
提供與遠端資料庫的資料連接。 這是伺服器連接。
提供資料連接至本機資料庫,或在用戶端上建立新的資料庫,如本逐步解說所示。 這是用戶端連接。
請從遠端連接中選取您要用於應用程式中的資料表。 這些稱為「快取的資料表」(Cached Table)。
為您加入本機資料庫的每一張資料表,選取協調變更所需的資料行,以及要用來儲存已刪除項目的資料表。 除了用來記錄已刪除之記錄的資料表外,每一張資料表都需要特定資料行,可記錄新的和修改過的記錄。
設定資料連接
您現在要設定伺服器連接,以連接至遠端資料庫 (您的應用程式外部的資料庫)。 用戶端連線可以連線到現有的 SQL Server 壓縮資料庫,或者您也可以讓設定資料同步處理 ] 對話方塊中為您建立新的本機資料庫。 在本逐步解說中,您將建立與伺服器資料庫的連接,並讓預設的用戶端連接在專案中自動建立新的用戶端資料庫 (Northwind.sdf)。
若要設定伺服器與用戶端資料庫的資料連接
將 [伺服器連接] 選取為 SQL Server 版本的 Northwind 資料庫,或按一下 [加入] 以建立新連接至 SQL Server 版的 Northwind 資料庫。 如需詳細資訊,請參閱 HOW TO:建立與 Northwind 資料庫的資料連線。
保留 [用戶端連接] 的預設值 [Northwind.sdf (新的)]。 這會建立一個新的 SQL Server 壓縮資料庫,並將它加入至您的專案。
選取伺服器連接後,[設定資料同步處理] 對話方塊會查詢伺服器上遠端資料庫中的可用資料表清單,並在擷取清單後啟用 [加入] 按鈕。
注意事項 請注意,[確定] 按鈕尚未啟用。這是因為沒有針對同步處理選取任何資料表的緣故。下個章節會說明如何加入資料表,讓您啟用 [確定] 按鈕。
選取並設定您要離線使用的資料表
您現在要選取資料表以加入至用戶端資料庫,以及與應用程式同步處理。 為您加入用戶端資料庫的每一張資料表,選取協調變更所需的追蹤資料行,以及要用來儲存已刪除項目的資料表。 如果您保留預設的設定,則 [設定資料同步處理] 對話方塊會建立追蹤資料行以及已刪除項目的資料表。 在這個逐步解說中,您將使用預設的設定。
若要設定本機快取用的資料表
按一下 [加入] 開啟 [設定離線使用的資料表] 對話方塊。
選擇並核取 [Customers] 資料表。
保留所有預設值。 按一下 [確定]。
[Customers] 資料表已加入至 [快取的資料表] 清單。
在 [設定資料同步處理] 對話方塊中,按一下 [確定]。
追蹤資料行和已刪除項目的資料表已建立在伺服器上。 Northwind.sdf 資料庫建立在專案中,而且是初次同步處理。
在 [資料來源組態精靈] 中選取並核取 [Customers] 資料表,然後按一下 [完成]。
NorthwindDataSet.xsd 已加入至專案且關閉所有對話方塊。
啟用應用程式中的同步處理
當您完成前述的步驟時,資料同步處理就已設定完成。 此時,您的應用程式內含下列內容:
本機 Northwind 資料庫 (Northwind.sdf)。
資料同步處理設定資訊 (NorthwindCache.sync)。
由 [資料來源組態] 精靈產生的具型別資料集 [NorthwindDataSet.xsd]。 其中包含從本機資料庫填入的 [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] 資料表,如此一來您便能確認本機與遠端資料庫是否正在執行資料同步處理。 您也要加入按鈕以啟動同步處理程序。
若要建立資料繫結表單以初始化並確認資料同步處理
將 [Customers] 節點從 [資料來源] 視窗拖曳至 [Form1]。
從 [工具箱] 將 [Button] 控制項拖曳到 [Form1] 內。 將按鈕的 [Name] 屬性設定為 SynchronizeButton,[Text] 屬性設定為 [開始同步處理]。
按兩下 [開始同步處理] 按鈕,以建立按鈕 Click 事件處理常式,並在 [程式碼編輯器] 中開啟表單。
加入程式碼以啟動同步處理程序,然後將 [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);
測試應用程式
若要測試應用程式
按 F5。
在應用程式執行時,使用 [伺服器總管/資料庫總管] (或其他資料庫管理工具) 連接至遠端伺服器資料庫並修改部分記錄。
在 [伺服器總管/資料庫總管] 中,找出遠端資料庫伺服器上的 [Customers] 資料表 (不是 Northwind.sdf 的連接)。
以滑鼠右鍵按一下 [Customers] 資料表,然後按一下 [顯示資料表資料]。
修改一筆或多筆記錄並認可變更 (巡覽修改過的資料列)。
返回至表單並按一下 [開始同步處理]。
確認遠端資料庫的修改已同步處理至本機資料庫,並顯示在方格中。
關閉表單 (停止偵錯)。
擷取同步處理的資訊
當您呼叫 Synchronize 方法時,不只是初始化同步處理程序。 Synchronize 方法也會傳回 SyncStatistics 物件,您可以用來存取同步處理的相關資訊。
若要存取同步處理統計資料
在 [程式碼編輯器] 中開啟 [Form1],然後將下列程式碼加入至 SynchronizeButton_Click 事件處理常式的底部,即前述步驟中加入的程式碼之下:
MessageBox.Show("Changes downloaded: " & syncStats.TotalChangesDownloaded.ToString)
MessageBox.Show("Changes downloaded: " + syncStats.TotalChangesDownloaded.ToString());
測試應用程式
若要測試應用程式
按 F5。
在應用程式執行時,使用 [伺服器總管/資料庫總管] (或其他資料庫管理工具) 連接至遠端伺服器資料庫並修改部分記錄。
在 [伺服器總管/資料庫總管] 中,找出遠端資料庫伺服器上的 [Customers] 資料表 (不是 Northwind.sdf 的連接)。
以滑鼠右鍵按一下 [Customers] 資料表,然後按一下 [顯示資料表資料]。
修改一筆或多筆記錄並認可變更 (巡覽修改過的資料列)。
返回至表單並按一下 [開始同步處理]。
隨即會出現一個訊息方塊,內含有關同步處理記錄的資訊。
確認遠端資料庫的修改已同步處理至本機資料庫,並顯示在方格中。
後續步驟
視應用程式的需求而定,您在應用程式中設定本機資料庫快取之後,可能還要執行幾個步驟。 例如,您可以進行下列作業讓這個應用程式發揮更強的功能:
實作雙向同步處理,讓本機資料庫快取中的變更可上載至伺服器。 如需詳細資訊,請參閱 HOW TO:設定本機和遠端資料庫以進行雙向同步處理。
部署包含本機資料庫快取的用戶端應用程式。 如需詳細資訊,請參閱逐步解說:將偶爾連接的用戶端應用程式與本機資料庫一起部署。