SQL Server Compact Edition 程序建立步驟
SQL Server 2005 任務(wù)在創(chuàng)建應(yīng)用程序之前,必須在 SQL Server 2005 中配置發(fā)布。在下列步驟中,您將創(chuàng)建一個(gè)示例數(shù)據(jù)庫,然后從該數(shù)據(jù)庫發(fā)布數(shù)據(jù)。您將使用預(yù)建的腳本文件創(chuàng)建數(shù)據(jù)庫,然后使用新建發(fā)布向?qū)韯?chuàng)建發(fā)布。創(chuàng)建數(shù)據(jù)庫并在其中填充數(shù)據(jù)準(zhǔn)備服務(wù)器以發(fā)布數(shù)據(jù)在創(chuàng)建發(fā)布之前,必須創(chuàng)建快照代理用戶帳戶,并創(chuàng)建一個(gè)將在其中存儲(chǔ)快照文件的共享文件夾,準(zhǔn)備服務(wù)器以進(jìn)行發(fā)布。創(chuàng)建快照文件夾之后,該文件夾將用于服務(wù)器上的所有發(fā)布。如果以前已在此服務(wù)器上創(chuàng)建了發(fā)布,您可以跳過這些步驟。 創(chuàng)建快照用戶帳戶創(chuàng)建快照文件夾創(chuàng)建發(fā)布設(shè)置權(quán)限您必須為快照代理帳戶和 IIS 匿名用戶帳戶授予權(quán)限。還必須將 IIS 匿名用戶帳戶添加到發(fā)布訪問列表 (PAL) 中。設(shè)置數(shù)據(jù)庫權(quán)限授予發(fā)布權(quán)限創(chuàng)建發(fā)布快照只有在創(chuàng)建發(fā)布快照之后才可對(duì) SQLMobile 發(fā)布的訂閱進(jìn)行初始化。創(chuàng)建發(fā)布快照_______________________________________________________________________________________配置 IIS 和 SQL Server 2005 以實(shí)現(xiàn) Web 同步既然已對(duì) SQL Server 配置了一個(gè)發(fā)布,則必須使該發(fā)布可以通過網(wǎng)絡(luò)供 SQL Server Compact Edition 客戶端使用。SQL Server Compact Edition 可通過 IIS 連接到 SQL Server。即,創(chuàng)建虛擬目錄并對(duì)其進(jìn)行配置,從而允許客戶端訪問 SQL Server Compact Edition 服務(wù)器代理。安裝 SQL Server Compact Edition 服務(wù)器組件配置發(fā)布以進(jìn)行 Web 同步_______________________________________________________________________________________SQL Server Compact Edition 任務(wù)如果在開發(fā)要使用 SQL Server Compact Edition 的應(yīng)用程序之前預(yù)先創(chuàng)建 SQL Server Compact Edition 數(shù)據(jù)庫和訂閱,通常會(huì)節(jié)省大量時(shí)間。SQL Server Management Studio 允許您在本地計(jì)算機(jī)上創(chuàng)建并使用 SQL Server Compact Edition 數(shù)據(jù)庫。然后,您可以在開發(fā)應(yīng)用程序時(shí)使用此數(shù)據(jù)庫。創(chuàng)建新的 SQL Server Compact Edition 數(shù)據(jù)庫創(chuàng)建新的訂閱
配置步驟為三步:;;創(chuàng)建發(fā)布-->web同步-->創(chuàng)建訂閱_______________________________________________________________________________________生成應(yīng)用程序創(chuàng)建新的智能設(shè)備項(xiàng)目添加引用 添加數(shù)據(jù)連接選擇要顯示的數(shù)據(jù)添加節(jié)點(diǎn)在應(yīng)用程序的代碼頁中,可添加包含數(shù)據(jù)庫文件的路徑和名稱的字符串變量、用于刪除數(shù)據(jù)庫文件(如果已存在)的代碼、用于創(chuàng)建與 SQL Server 發(fā)布的連接、同步數(shù)據(jù)和創(chuàng)建一個(gè)包含已發(fā)布數(shù)據(jù)的新本地?cái)?shù)據(jù)庫的代碼。添加代碼在解決方案資源管理器中,右鍵單擊“Form1”,然后選擇“查看代碼”。在代碼頁中,查找 Form1 的類定義。添加一個(gè)字符串變量,并賦值為 .sdf 文件的路徑和文件名。Visual Studio 在先前步驟中創(chuàng)建的數(shù)據(jù)源需要數(shù)據(jù)庫文件駐留在 Program FilesApplicationName 文件夾中,其中 ApplicationName 為應(yīng)用程序的名稱。例如,如果您命名了新項(xiàng)目 SQLMobile,則應(yīng)將字符串變量設(shè)置為 'Program FilesSQLMobilesqlmobile.sdf'。類定義的前幾行應(yīng)該與以下代碼類似:[C#]復(fù)制代碼 public partial class Form1 : System.Windows.Forms.Form{ private System.Windows.Forms.MainMenu mainMenu1; string filename = @'Program FilesSQLMobilesqlmobile.sdf';
public Form1() { InitializeComponent(); }如果當(dāng)前存在數(shù)據(jù)庫文件,則將創(chuàng)建新方法將該數(shù)據(jù)庫文件刪除。這將確保應(yīng)用程序在每次運(yùn)行時(shí)加載最新的數(shù)據(jù)。此方法應(yīng)該命名為 DeleteDB。此代碼應(yīng)該與以下代碼類似:[C#]復(fù)制代碼 private void DeleteDB(){ if (System.IO.File.Exists(filename)) { System.IO.File.Delete(filename); }}創(chuàng)建名為“Sync”的執(zhí)行同步的新方法。若要執(zhí)行此操作,您將使用從前面步驟的“新建發(fā)布向?qū)А敝袕?fù)制的代碼。在粘貼代碼后,必須對(duì)代碼執(zhí)行兩項(xiàng)更改:更改 SubscriberConnectionString 值,以便該值指向文件名變量中指定的正確路徑和文件名。將 AddOption 值從 ExistingDatabase 更改為 CreateDatabase。更改完成后,Sync 方法應(yīng)如下所示:[C#]復(fù)制代碼 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()); }}最后,在調(diào)用最新創(chuàng)建的兩個(gè)方法的 Form1_Load 事件處理程序的開頭添加代碼。Form1_Load 事件處理程序應(yīng)如下所示:[C#]復(fù)制代碼 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);}_______________________________________________________________________________________部署并測(cè)試應(yīng)用程序部署應(yīng)用程序
