利用 SQL Server Compact Edition 建立行動應用程式

在此逐步解說中,您將瞭解如何在 Microsoft Visual Studio 2005 中使用 Microsoft SQL Server 2005 Compact Edition 建立應用程式。SQL Server Compact Edition 資料庫將會是 SQL Server 2005 發行集的訂閱者,而且將使用合併式複寫從 SQL Server 2005 資料庫將資訊下載至 SQL Server Compact Edition 資料庫。

在此逐步解說中,您將遵循下列步驟:

  1. 設定 SQL Server 2005 發行集。
  2. 設定用於複寫的 Internet Information Services (IIS)。
  3. 建立 SQL Server Compact Edition 訂閱。
  4. 建立應用程式。
  5. 部署應用程式及測試訂閱。

必要條件

若要執行此逐步解說的步驟,您需要:

  • 已安裝 Windows XP 及 IIS 的電腦。
  • 在安裝 Visual Studio 的相同電腦上安裝 SQL Server 2005 Service Pack 2 (SP2) 或更新的版本。

SQL Server 2005 工作

建立應用程式之前,您必須先在 SQL Server 2005 設定發行集。在下列步驟中,您將會建立範例資料庫,然後從該資料庫發行資料。您將會利用預先建構的指令碼檔來建立資料庫,然後利用「新增發行集精靈」建立發行集

建立資料庫並擴展資料

  1. 開啟 SQL Server Management Studio。

  2. 看見連接到伺服器的提示時,請輸入 (local) 做為 [伺服器名稱],然後按一下 [連接]。

  3. 開啟新的查詢視窗。建立 SQL Server Compact Edition 資料庫,並以資料擴展資料庫。

    USE master;
    GO
    IF EXISTS (SELECT * FROM sys.sysdatabases WHERE name = 'SQLMobile') 
    BEGIN
        DROP Database SQLMobile;
    END
    GO
    CREATE DATABASE SQLMobile;
    GO
    USE SQLMobile;
    GO
    CREATE TABLE MembershipData (MemberID INTEGER IDENTITY (1,1) 
        CONSTRAINT pkMemberID PRIMARY KEY, MemberName NVarChar (50));
    CREATE TABLE FlightData (MemberID INTEGER FOREIGN KEY REFERENCES 
        MembershipData(MemberID), Destination NVarChar (50), FlightStatus 
        NVarChar(50), ArrivalDate DATETIME, FlownMiles INTEGER);
    INSERT INTO MembershipData (MemberName) VALUES ('Mr Don Hall');
    INSERT INTO MembershipData (MemberName) VALUES ('Mr Jon Morris');
    INSERT INTO MembershipData (MemberName) VALUES ('Ms TiAnna Jones');
    INSERT INTO FlightData (MemberID, Destination, FlightStatus, ArrivalDate, FlownMiles) 
        VALUES (1, 'Seattle', 'Flight Delayed 1 hour', '8/25/00', '20000');
    INSERT INTO FlightData (MemberID, Destination, FlightStatus, ArrivalDate, FlownMiles) 
        VALUES (2, 'London', 'Flight on time', '9/12/00', '15000');
    INSERT INTO FlightData (MemberID, Destination, FlightStatus, ArrivalDate, FlownMiles) 
        VALUES (3, 'Sydney', 'Flight Gate Closing', '11/5/00', '30000');
    INSERT INTO FlightData (MemberID, Destination, FlightStatus, ArrivalDate, FlownMiles) 
        VALUES (1, 'Tokyo', 'Delayed Fog', '5/25/00', '25000');
    INSERT INTO FlightData (MemberID, Destination, FlightStatus, ArrivalDate, FlownMiles) 
        VALUES (2, 'Minneapolis', 'Flight on time', '5/1/00', '1000');
    INSERT INTO FlightData (MemberID, Destination, FlightStatus, ArrivalDate, FlownMiles) 
        VALUES (3, 'Memphis', 'Flight Gate Closing', '1/5/00', '1000');
    GO
    
  4. 按一下 [Execute (!)] 即可執行指令碼,並建立資料庫。指令碼會執行並建立稱為 SQLMobile 的新資料庫。

    附註:
    您也可按 [F5] 或從 [查詢] 功能表選擇 [執行] 來執行此查詢。
  5. 若要確認資料庫已建立,請在 [物件總管] 中,展開 (local),展開 [資料庫],然後展開 [SQLMobile]。如果 SQLMobile 資料庫未列出,請在 [資料庫] 上按一下滑鼠右鍵,並選取 [重新整理],以更新資料庫清單

準備發行資料的伺服器

建立發行集之前,必須先準備用來發行的伺服器,其方式是建立快照集代理程式使用者帳戶,並且建立儲存快照集檔案的共用資料夾。當建立好快照集資料夾,它會供伺服器上所有發行集使用。若您先前已在此伺服器上建立發行集,可跳過這幾個步驟。

建立快照集使用者帳戶

  1. 從 [控制台] 的 [系統管理工具] 開啟 [電腦管理]。

  2. 在 [電腦管理] 中,展開 [系統工具],展開 [本機使用者和群組],以滑鼠右鍵按一下 [使用者],然後選擇 [新增使用者]。

  3. 在 [新增使用者] 對話方塊中輸入下列資料,然後按一下 [建立]:

欄位

使用者名稱

snapshot_agent

密碼

p@ssw0rd

確認密碼

p@ssw0rd

使用者必須在下次登入時變更密碼

未選取

密碼永久有效

已選取

重要事項:
這些設定僅限測試使用。在生產環境中,使用者帳戶設定務必符合網路安全需求。在許多情況下,您會使用網域使用者帳戶執行快照集代理程式,而不是使用本機使用者帳戶。

建立快照集資料夾

  1. 在 [Windows 檔案總管] 中﹐建立名為 [快照集] 的新資料夾。在此逐步解說中﹐您可以在磁碟機 C 的根目錄 c:\snapshot 下建立此資料夾。以滑鼠右鍵按一下 [snapshot] 資料夾,並選取 [共用和安全性]。

  2. 在 [共用] 標籤上,選取 [共用此資料夾],然後按一下 [權限]。

  3. 在 [snapshot 權限] 中,按一下 [新增]。

  4. 在 [請輸入物件名稱來選取] 中,輸入 computername\snapshot_agent,其中 computername 是本機電腦的名稱,按一下 [檢查名稱],然後按一下 [確定]。

  5. 在 [snapshot 權限] 中選取 snapshot_agent,指派 [變更] 與 [讀取] 共用權限,然後按一下 [確定]。

  6. 選取 [安全性] 標籤。

  7. 按一下 [新增]。

  8. 在 [請輸入物件名稱來選取] 中,輸入 computername\snapshot_agent,其中 computername 是本機電腦的名稱,按一下 [檢查名稱],然後按一下 [確定]。

  9. 選取 [snapshot_agent],並將 [寫入] 權限加入啟用的權限清單中。下列權限將授予 snapshot_agent 帳戶:

    • 讀取和執行
    • 列出資料夾內容
    • 讀取
    • 寫入
  10. 按一下 [確定] 以關閉 [snapshot 屬性] 視窗。

  11. 關閉 [Windows 檔案總管]。

建立發行集

  1. 在 SQL Server Management Studio 的 [物件總管] 中,若 (local) 節點尚未展開,請將它展開,然後展開 [複寫]。

  2. 以滑鼠右鍵按一下 [本機發行集] 資料夾,並選取 [新增發行集]。

  3. 在「新增發行集精靈」簡介畫面上,按 [下一步]。

  4. 如果您以前沒有在此電腦上建立發行集,系統會提示您設定散發者。選取第一個選項,使用本機電腦做為本身的散發者,然後按 [下一步]。

  5. 如果您以前沒有在此電腦上建立發行集,系統會提示您指定快照集資料夾。輸入您在前一個程序建立之快照集資料夾的共用路徑。以 \\servername\share 格式輸入共用路徑,而不是本機路徑。在逐步解說中,建議您輸入 \\computer\snapshot,其中 computer 是電腦名稱,然後按 [下一步]。

  6. 在資料庫清單中,選取 [SQLMobile],然後按一下 [下一步]。

  7. 在發行集類型清單中,選取 [合併式發行集],然後按 [下一步]。

  8. 在 [訂閱者] [類型] 頁面中。選取 [是] 以啟用 SQL Server Compact Edition 訂閱者的支援,然後按 [下一步]。

  9. 在發行物件的清單中,選取 [資料表] 核取方塊。如果您展開 [資料表],會看到 SQLMobile 資料庫中的兩個資料表都已選取。按 [下一步]。

  10. 您會接到唯一識別碼將新增到資料表的通知。所有的合併式發行項都需要 uniqueindentifier 資料行。按 [下一步]。

  11. 在 [篩選資料表資料行] 頁面中,您現在可以新增篩選條件到已發行的資料。此逐步解說不會讓您篩選資料。按 [下一步]。

  12. 在 [快照集代理程式] 頁面中﹐您可以設定快照集建立的時間,以及「快照集代理程式」執行的頻率。按 [下一步] 以接受預設值。

  13. 在 [代理程式安全性] 對話方塊中,按一下 [安全性設定]。

    1. 在 [快照集代理程式安全性] 對話方塊中,輸入您在前一個程序建立的帳戶登入資訊。處理帳戶是 computer_name\snapshot_agent (其中 computer_name 是電腦的名稱),而密碼是 p@ssw0rd。
    2. 按一下 [確定] 以儲存設定。
    3. 在 [代理程式安全性] 頁面中,按 [下一步]。
  14. 在 [精靈動作] 畫面上,可決定發行集要在何時建立,以及是否要建立指令碼檔。清除 [立即建立快照集],然後按一下 [下一步]。

  15. 在 [完成精靈] 畫面上,輸入 SQLMobile 做為發行集的名稱,然後按一下 [完成]。

  16. 發行集現已建立。精靈完成時,請按一下 [關閉]。

設定權限

您必須將權限授予快照集代理程式帳戶及 IIS 匿名使用者帳戶。您也必須將 IIS 匿名使用者帳戶加入發行集存取清單 (PAL)。

設定資料庫權限

  1. 在 [物件總管] 的 中,展開 [安全性],以滑鼠右鍵按一下 [登入],然後選取 [新增登入]。

  2. 在 [新增登入] 對話方塊中,選取 [Windows 驗證],按一下 [搜尋],在 [請輸入物件名稱來選取] 方塊中輸入 computername\snapshot_agent,其中 computername 是電腦的名稱,按一下 [檢查名稱],然後按一下 [確定]。

  3. 在導覽窗格中,選擇 [使用者對應] 窗格。

  4. 在資料庫清單中,選取 [散發] 與 [db_owner] 角色,選取 [SQLMobile] 與 [db_owner] 角色,然後按一下 [確定]。

  5. 在 [登入] 上按一下滑鼠右鍵,然後選取 [新增登入]。

  6. 在 [新增登入] 對話方塊中,選取 [Windows 驗證],按一下 [搜尋],在 [請輸入物件名稱來選取] 方塊中輸入 computername\iusr_computername,其中 computername 是電腦的名稱,按一下 [檢查名稱],然後按一下 [確定]。

  7. 在導覽窗格中,選取 [使用者對應] 窗格。

  8. 在資料庫清單中,選取 [散發] 與 [SQLMobile],然後按一下 [確定]。

授與存取發行集

  1. 在 [物件總管] 中,依序展開 [複寫] 和 [發行集],以滑鼠右鍵按一下 [[SQLMobile]:SQLMobile] 發行集,然後按一下 [屬性]。

  2. 在導覽窗格中,選取 [發行集存取清單]。

  3. 按一下 [新增]。在 [新增發行集存取] 對話方塊中,已列出 IUSR 帳戶。將它選取,然後按一下 [確定]。

  4. 確認 IUSR 帳戶現已在 PAL 中,然後按一下 [確定]。

建立發行集快照集

您必須建立發行集快照集,才可以初始化 SQLMobile 發行集的訂閱。

建立發行集快照集

  1. 在 SQL Server Management Studio 的 [物件總管] 中,展開 (local) 電腦節點。

  2. 展開 [本機發行集] 資料夾,選取發行集名稱,以滑鼠右鍵按一下 [SQLMobile],然後按一下 [檢視快照集代理程式狀態]。

  3. 在 [檢視快照集代理程式狀態] 對話方塊中,按一下 [開始]。

    請確定快照集作業已成功,才能繼續。

設定 IIS 與 SQL Server 2005 進行 Web 同步處理

既然 SQL Server 已設定發行集,您必須讓 SQL Server Compact Edition 用戶端能夠透過網路存取該發行集。SQL Server Compact Edition 會透過 IIS 連接到 SQL Server。具體說來,您會建立並設定一個虛擬目錄,讓用戶端可以存取 SQL Server Compact Edition 伺服器代理程式。

安裝 SQL Server Compact Edition 伺服器元件

  1. 在 [Windows 檔案總管] 中,找到以下目錄:

    C:\Program Files\Microsoft SQL Server\90\Tools\Binn\VSShell\Common7\IDE

  2. 按兩下 sqlce30setupen.msi 即可執行安裝程式。

  3. 在「安裝精靈」的簡介畫面上,按 [下一步]。

  4. 閱讀並接受 Microsoft 軟體授權條款,然後按一下 [下一步]。

  5. 在 [系統組態檢查] 畫面上,確定所有的項目都通過檢查。如果您沒有安裝 SQL Server 2000,清單上最後一個項目會列為警告。因為您正在使用 SQL Server 2005,所以不會有問題。按 [下一步]。

  6. 在接下來的畫面按 [下一步],然後按一下 [安裝] 即可開始安裝。

  7. 按一下 [完成]。

設定發行集進行 Web 同步處理

  1. 在 SQL Server Management Studio 的 [物件總管] 中,展開 (local) 電腦節點。

  2. 展開 [本機發行集] 資料夾,選取發行集名稱,以滑鼠右鍵按一下並選取 [設定 Web 同步處理]。

  3. 在精靈的簡介畫面上,按 [下一步]。

  4. 在 [訂閱者類型] 的畫面上選取 [SQL Server Compact Edition],然後按 [下一步]。

  5. 在 [Web 伺服器] 畫面上,如果 [執行 IIS 的電腦] 文字方塊未提供電腦名稱,請輸入您的電腦名稱,然後按一下 [建立新的虛擬目錄]。

  6. 在顯示的樹狀目錄上展開電腦,展開 [網站],然後選取 [預設的網站]。

  7. 按 [下一步]。

  8. 在 [虛擬目錄資訊] 畫面的 [別名] 文字方塊中,輸入 SQLMobile,然後按 [下一步]。

    如果您收到警告對話方塊,請按一下 [是]。

  9. 在 [安全通訊] 畫面中,選取 [不需要安全通道 (SSL)]。

  10. 重要事項   在生產環境中,您應該啟用 SSL 加密以保護透過網際網路在訂閱者與執行 IIS 的伺服器之間交換的資料,在 [用戶端驗證] 畫面上,選取 [用戶端會匿名連接],然後按一下 [下一步]。

  11. 在 [匿名存取] 畫面上,按 [下一步] 以接受預設值。

  12. 在 [快照集共用存取] 畫面上,輸入 \\computer\snapshot,其中 computer 是電腦的名稱,然後按 [下一步]。

    若您收到此快照集共用是空的警告,請按一下 [是]。

  13. 按一下 [完成]。

  14. 按一下 [關閉]。

  15. 在 Internet Explorer 中,在 [網址] 中輸入 URL https://localhost/SQLMobile/sqlcesa30.dll?diag,然後按一下[移至]。這會連接至診斷模式下的伺服器。請確認 SQL Server Compact Edition 伺服器代理程式診斷報告顯示成功。

SQL Server Compact Edition 工作

在開發使用 SQL Server Compact Edition 的應用程式之前,若能預先建立 SQL Server Compact Edition 資料庫與訂閱,往往可以節省很多時間。SQL Server Management Studio 可讓您在本機電腦上建立並處理 SQL Server Compact Edition 資料庫。以後開發應用程式時,就可以使用此資料庫。

建立新的 SQL Server Compact Edition 資料庫

  1. 在 SQL Server Management Studio 的 [物件總管] 中,按一下 [連接],然後選擇 [SQL Server Compact Edition]。

  2. 在 [資料庫檔案] 欄位中,選取 [<新增資料庫...>]。

  3. 在檔名文字方塊中,輸入 c:\sqlmobile.sdf,然後按一下 [確定]。

    如果您收到關於空白密碼的警告,請按一下 [是]。在此教學課程中的資料庫沒有密碼保護或未加密。

  4. 在 [連接到伺服器] 對話方塊中,按一下 [連接]。

    名為 [SQL Server Compact Edition [My Computer\...\sqlmobile]] 的新節點會新增到 [物件總管]。

建立新的訂閱

  1. 在 [物件總管] 中,依次展開 [SQL Server Compact Edition] 節點和[複寫],在 [訂閱] 上按一下滑鼠右鍵,然後選擇 [新增訂閱]。

  2. 在簡介畫面上,按 [下一步]。

  3. 在 [選取發行集] 畫面上的 [發行者] 下拉式清單中,選擇 [<尋找 SQL Server 發行者…>]。

  4. 在 [連接到伺服器] 對話方塊中,輸入或選擇本機電腦的名稱,然後按一下 [連接]。

  5. 在 [選取發行集] 畫面的發行集清單,展開 [SQLMobile],選取 [SQLMobile] 發行集,然後按 [下一步]。

  6. 在 [識別訂閱] 畫面上,輸入 SQLMobile 做為訂閱名稱,然後按 [下一步]。

  7. 在 [Web 伺服器驗證] 畫面上,輸入在前一個程序建立的虛擬目錄的 URL。在逐步解說中,建立的虛擬目錄的 URL 為 https://localhost/SQLMobile。

  8. 按一下 [訂閱者將以匿名方式來連接],然後按 [下一步]。

  9. 在「SQL Server 驗證」畫面上,按 [下一步] 以接受預設值。

    在最後的畫面上,精靈會顯示當您在應用程式建立訂閱時使用的範例程式碼。選取此範例程式碼 (可能是 Visual Basic 或 C#,視您用來建立應用程式的語言而定),並複製程式碼。若要這樣做,請先選取程式碼,並按 CTRL+C。啟動 [記事本] 或另一個文字編輯器,將範例程式碼貼上。在接下來的程序中建立應用程式時,會用到此程式碼。

  10. 複製範例程式碼之後,按一下 [完成]。

  11. 按一下 [關閉]。

建立應用程式

建立新的「智慧型裝置」專案

  1. 開啟 Visual Studio 2005。

  2. 在 [檔案] 功能表上,選取 [新增專案]。

  3. 在 [新增專案] 對話方塊中的 [專案類型] 樹狀目錄上,展開您的開發語言,然後選取 [智慧型裝置]。

  4. 在範例清單中,選取您要建立的專案類型。對於此步驟解說,請選取 [Pocket PC 2003 應用程式]。

  5. 提供專案的名稱與位置,然後按一下 [確定]。對於此逐步解說,請將專案命名為 SQLMobile。

    Visual Studio 會建立一個新專案並顯示 Form1,就像它會出現在智慧型裝置上的樣子。

加入參考

  1. 在 [方案總管] 的 [參考] 上按一下滑鼠右鍵,選擇 [加入參考]。

    附註:
    如果 [方案總管] 中未列出 [參考] 資料夾,請按一下 [方案總管] 最上方的 [顯示所有檔案]。
  2. 在 .NET 組件清單中,選取 [System.Data.SqlServerCe],然後按一下 [確定]。如果 System.Data.SqlServerCe 不在清單上,請執行下列步驟:

    1. 按一下 [瀏覽] 標籤。
    2. 找到以下目錄:
      C:\Program Files\Microsoft Visual Studio 8\Common7\IDE
    3. 選取 System.Data.SqlServerCe.dll,然後按一下 [確定]。

    [方案總管] 中的參考清單現已包含 System.Data.SqlServerCe,您的專案也可以使用此組件。

  3. 在 [方案總管] 中,在 Form1.cs 或 Form1.vb 上按一下滑鼠右鍵,並且選擇 [檢視程式碼]。

  4. 在表單的程式碼最上方,加入使用 System.Data.SqlServerCe 命名空間的指示詞:

    [C#]

    using System.Data.SqlServerCe;
    

    [VB]

    Imports System.Data.SqlServerCe
    

新增資料連接

  1. 在主視窗中,切換回 Form1 的 [設計] (預設) 檢視。

  2. 從 [資料] 功能表按一下 [新增資料來源]。

    注意 若未顯示「新增資料來源」,請選取 Form1 的 [設計] 檢視,然後再查看 [資料] 功能表。

  3. 在 [選擇資料來源類型] 視窗,選取 [資料庫],然後按 [下一步]。

  4. 在 [選擇資料連接] 對話方塊中,按一下 [新增連接]。

  5. 如果顯示了 [加入連接] 對話方塊,請按一下 [變更]。

  6. 在 [選擇資料來源] 對話方塊中的 [資料來源] 之下,選取 [Microsoft SQL Server Compact Edition] (如果有現有的連接,此對話方塊的名稱可能是 [變更資料來源])。在資料提供者清單中,選擇 [.NET Framework Data Provider for SQL Server Compact Edition]。按一下 [繼續] 或 [確定]。

  7. 在 [加入連接] 對話方塊的 [資料來源] 下,選取 [我的電腦]。

    在 [連接屬性] 區段中的 [資料庫] 下,按一下 [瀏覽],然後瀏覽到您在前一個程序中建立的資料庫。如果您都按照上述步驟執行,此資料庫就會位於 c:\sqlmobile.sdf。

  8. 按一下 [測試連接],然後按一下 [確定] 以建立新資料連接。

  9. 在 [選擇您的資料連接] 對話方塊中,按 [下一步]。

  10. 如果顯示的對話方塊詢問您是否要將資料檔案複製到目前的專案,請按一下 [是]。

  11. 在 [儲存連接字串] 視窗中,按 [下一步]。

  12. 在 [選擇您的資料庫物件] 視窗中,選取 [資料表],然後按一下 [完成]

選擇要顯示的資料

  1. 從 [資料] 功能表選擇 [顯示資料來源]。

  2. 將 MembershipData 資料表從 [資料來源] 視窗拖曳到 [Form1 設計] 視窗。Form1 上會自動建立 DataGrid,並自動提供資料行名稱。

  3. 在 DataGrid 上按一下滑鼠右鍵,然後按一下 [屬性]。

  4. 在 [屬性] 視窗中,將 Dock 值變更為 Top。方法是按一下出現的表示圖最上一列,或是在值欄位輸入 Top。DataGrid 會被移動,並調整大小以填滿 Form1 上方區段。

  5. 按一下 DataGrid 右上角的小箭頭。從出現的功能表中選擇 [產生資料表單]。

  6. 將 [FlightData] 資料表從 [資料來源] 視窗拖曳到 [Form1 設計] 視窗。Form1 上會自動建立 DataGrid,並自動提供資料行名稱。

  7. 您可以使用此 DataGrid 的 [屬性] 設定,將 Dock 屬性設為 Bottom。

加入程式碼

在應用程式的字碼頁上,您將加入含有資料庫檔案路徑與名稱的字串變數、若資料庫檔案已經存在則刪除此資料庫檔案的程式碼,以及用以建立對 SQL Server 發行集的連接、同步處理資料,及建立含有發行資料之新本機資料庫的程式碼。

加入程式碼

  1. 從 [方案總管] 中,在 Form1 上按一下滑鼠右鍵,並選擇 [檢視程式碼]。

  2. 在字碼頁中,找出 Form1 的類別定義。加入字串變數,並將 .sdf 檔案的路徑及檔案名稱指派給它。Visual Studio 在先前步驟中建立的資料來源會預期資料庫檔案位於 \Program Files\ApplicationName 資料夾,其中 ApplicationName 是應用程式的名稱。例如,如果您將新的專案命名為 SQLMobile,字串變數應該是設定為 "\Program Files\SQLMobile\sqlmobile.sdf"

  3. 類別定義的前幾行應該類似下列程式碼:

    [C#]

    public partial class Form1 : System.Windows.Forms.Form
    {
       private System.Windows.Forms.MainMenu mainMenu1;
       string filename = @"\Program Files\SQLMobile\sqlmobile.sdf";
    
       public Form1()
       {
          InitializeComponent();
       }
    

    [Visual Basic]

    Public Class Form1
    
        Dim filename As New String _
          ("\Program Files\SQLMobile\sqlmobile.sdf")
    
  4. 建立新方法以刪除已經存在的資料庫檔案。這可確保應用程式在每次執行時都載入最新的資料。此方法應該命名為 DeleteDB。您的程式碼應該類似下列程式碼:

    [C#]

    private void DeleteDB()
    {
       if (System.IO.File.Exists(filename)) 
       {
          System.IO.File.Delete(filename);
       }
    }
    

    [Visual Basic]

    Sub DeleteDB()
       If System.IO.File.Exists(filename) Then
          System.IO.File.Delete(filename)
       End If
    End Sub
    
  5. 建立執行同步處理的新方法,命名為 Sync。方法是使用在前一步驟中,從「新增發行集精靈」複製而來的程式碼。貼上程式碼時,您必須變更程式碼的兩個地方:

    1. 變更 SubscriberConnectionString 值,讓它指向正確的路徑與檔案名稱,如同在您的檔案名稱變數中所指定的一樣。

    2. 將 AddOption 值從 ExistingDatabase 變更為 CreateDatabase。
      完成時,Sync 方法應該類似下列程式碼:
      [C#]

      private void Sync()
      {
         SqlCeReplication repl = new SqlCeReplication();
      
         repl.InternetUrl = @"http://<computername>/sqlmobile/sqlcesa30.dll";
         repl.Publisher = @"<computername>";
         repl.PublisherDatabase = @"SQLMobile";
         repl.PublisherSecurityMode = SecurityType.NTAuthentication;
         repl.Publication = @"SQLMobile";
         repl.Subscriber = @"SQLMobile";
         repl.SubscriberConnectionString = @"Data Source='" + filename + 
           "';Password='';Max Database Size='128';Default Lock Escalation 
           ='100';";
         try
         {
            repl.AddSubscription(AddOption. CreateDatabase);
            repl.Synchronize();
         }
         catch (SqlCeException e)
         {
            MessageBox.Show(e.ToString());
         }
      }
      

      [Visual Basic]

      Sub Sync()
         Dim repl As New SqlCeReplication()
         repl.InternetUrl = "http://<computername>/SQLMobile/sqlcesa30.dll"
         repl.Publisher = "<computername>"
         repl.PublisherDatabase = "SQLMobile"
         repl.PublisherSecurityMode = SecurityType.NTAuthentication
         repl.Publication = "SQLMobile"
         repl.Subscriber = "SQLMobile"
         repl.SubscriberConnectionString = _
            "Data Source='" + filename + "';Password='';" _ 
            & "Max Database Size='128';Default Lock Escalation ='100';"
         try
            repl.AddSubscription(AddOption. CreateDatabase) 
            repl.Synchronize() 
         catch err as SqlCeException
            MessageBox.Show(err.ToString)
         end tryEnd Sub
      
  6. 最後,將程式碼加入到呼叫您剛才建立的兩個方法之 Form1_Load 事件處理常式的開頭。您的 Form1_Load 事件處理常式應該類似下列程式碼:

    [C#]

    private void Form1_Load(object sender, EventArgs e)
    {
       DeleteDB();
       Sync();
    
    // TODO: Delete this line of code.
       this.flightDataTableAdapter.Fill(this.sqlmobileDataSet.FlightData);
    // TODO: Delete this line of code.
       this.membershipDataTableAdapter.Fill(this.sqlmobileDataSet.MembershipData);
    }
    

    [Visual Basic]

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
       DeleteDB()
       Sync()
    
       'TODO: Delete this line of code.
       Me.FlightDataTableAdapter.Fill(Me.SqlmobileDataSet.FlightData)
       'TODO: Delete this line of code ...
       Me.MembershipDataTableAdapter.Fill(Me.SqlmobileDataSet.MembershipData)
    End Sub
    

部署及測試應用程式

部署應用程式

  1. 從 [偵錯] 功能表選擇 [開始偵錯]。

  2. 如果顯示了 [部署] 對話方塊,請選擇 [Pocket PC 2003 SE 模擬器],然後按一下 [部署]。

  3. 模擬器在新視窗開啟。第一次部署應用程式到模擬器時,會安裝 .NET Compact Framework 和 SQL Server Compact Edition。這可能需要幾分鐘時間。安裝妥當時,您的應用程式也已安裝並開始執行。

    您的應用程式會載入,並顯示兩個 DataGrid。在 MembershipData DataGrid 中按一下某個值時,FlightData DataGrid 中的資料會自動更新。

  4. 關閉此應用程式後,在 Visual Studio 中,從 [偵錯] 功能表按一下 [停止偵錯]。

請參閱

概念

保護資料庫 (SQL Server Compact Edition)

說明及資訊

取得 SQL Server Compact Edition 協助