SQL Server Compact Edition 程序建立步驟
SQL Server 2005 任務(wù)在創(chuàng)建應(yīng)用程序之前,必須在 SQL Server 2005 中配置發(fā)布。在下列步驟中,您將創(chuàng)建一個(gè)示例數(shù)據(jù)庫(kù),然后從該數(shù)據(jù)庫(kù)發(fā)布數(shù)據(jù)。您將使用預(yù)建的腳本文件創(chuàng)建數(shù)據(jù)庫(kù),然后使用新建發(fā)布向?qū)?lái)創(chuàng)建發(fā)布。創(chuàng)建數(shù)據(jù)庫(kù)并在其中填充數(shù)據(jù)準(zhǔn)備服務(wù)器以發(fā)布數(shù)據(jù)在創(chuàng)建發(fā)布之前,必須創(chuàng)建快照代理用戶(hù)帳戶(hù),并創(chuàng)建一個(gè)將在其中存儲(chǔ)快照文件的共享文件夾,準(zhǔn)備服務(wù)器以進(jìn)行發(fā)布。創(chuàng)建快照文件夾之后,該文件夾將用于服務(wù)器上的所有發(fā)布。如果以前已在此服務(wù)器上創(chuàng)建了發(fā)布,您可以跳過(guò)這些步驟。 創(chuàng)建快照用戶(hù)帳戶(hù)創(chuàng)建快照文件夾創(chuàng)建發(fā)布設(shè)置權(quán)限您必須為快照代理帳戶(hù)和 IIS 匿名用戶(hù)帳戶(hù)授予權(quán)限。還必須將 IIS 匿名用戶(hù)帳戶(hù)添加到發(fā)布訪(fǎng)問(wèn)列表 (PAL) 中。設(shè)置數(shù)據(jù)庫(kù)權(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ā)布可以通過(guò)網(wǎng)絡(luò)供 SQL Server Compact Edition 客戶(hù)端使用。SQL Server Compact Edition 可通過(guò) IIS 連接到 SQL Server。即,創(chuàng)建虛擬目錄并對(duì)其進(jìn)行配置,從而允許客戶(hù)端訪(fǎng)問(wèn) SQL Server Compact Edition 服務(wù)器代理。安裝 SQL Server Compact Edition 服務(wù)器組件配置發(fā)布以進(jìn)行 Web 同步_______________________________________________________________________________________SQL Server Compact Edition 任務(wù)如果在開(kāi)發(fā)要使用 SQL Server Compact Edition 的應(yīng)用程序之前預(yù)先創(chuàng)建 SQL Server Compact Edition 數(shù)據(jù)庫(kù)和訂閱,通常會(huì)節(jié)省大量時(shí)間。SQL Server Management Studio 允許您在本地計(jì)算機(jī)上創(chuàng)建并使用 SQL Server Compact Edition 數(shù)據(jù)庫(kù)。然后,您可以在開(kāi)發(fā)應(yīng)用程序時(shí)使用此數(shù)據(jù)庫(kù)。創(chuàng)建新的 SQL Server Compact Edition 數(shù)據(jù)庫(kù)創(chuàng)建新的訂閱
配置步驟為三步:;;創(chuàng)建發(fā)布-->web同步-->創(chuàng)建訂閱_______________________________________________________________________________________生成應(yīng)用程序創(chuàng)建新的智能設(shè)備項(xiàng)目添加引用 添加數(shù)據(jù)連接選擇要顯示的數(shù)據(jù)添加節(jié)點(diǎn)在應(yīng)用程序的代碼頁(yè)中,可添加包含數(shù)據(jù)庫(kù)文件的路徑和名稱(chēng)的字符串變量、用于刪除數(shù)據(jù)庫(kù)文件(如果已存在)的代碼、用于創(chuàng)建與 SQL Server 發(fā)布的連接、同步數(shù)據(jù)和創(chuàng)建一個(gè)包含已發(fā)布數(shù)據(jù)的新本地?cái)?shù)據(jù)庫(kù)的代碼。添加代碼在解決方案資源管理器中,右鍵單擊“Form1”,然后選擇“查看代碼”。在代碼頁(yè)中,查找 Form1 的類(lèi)定義。添加一個(gè)字符串變量,并賦值為 .sdf 文件的路徑和文件名。Visual Studio 在先前步驟中創(chuàng)建的數(shù)據(jù)源需要數(shù)據(jù)庫(kù)文件駐留在 Program FilesApplicationName 文件夾中,其中 ApplicationName 為應(yīng)用程序的名稱(chēng)。例如,如果您命名了新項(xiàng)目 SQLMobile,則應(yīng)將字符串變量設(shè)置為 'Program FilesSQLMobilesqlmobile.sdf'。類(lèi)定義的前幾行應(yīng)該與以下代碼類(lèi)似:[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ù)庫(kù)文件,則將創(chuàng)建新方法將該數(shù)據(jù)庫(kù)文件刪除。這將確保應(yīng)用程序在每次運(yùn)行時(shí)加載最新的數(shù)據(jù)。此方法應(yīng)該命名為 DeleteDB。此代碼應(yīng)該與以下代碼類(lèi)似:[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 事件處理程序的開(kāi)頭添加代碼。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)用程序
