之前用蹩腳的英文嘗試翻譯了一些簡單的英文基礎教程,估計錯誤不少,在這裡將其整理好並給出一個簡單的樣本程式,請多指教。
- Windows Phone本機資料庫(SQLCE):1、介紹(翻譯)
- Windows Phone本機資料庫(SQLCE):2、LINQ to SQL(翻譯)
- Windows Phone本機資料庫(SQLCE):3、[table]attribute(翻譯)
- Windows Phone本機資料庫(SQLCE):4、[Column]attribute(翻譯)
- Windows Phone本機資料庫(SQLCE):5、[Association]attribute(翻譯)
- Windows Phone本機資料庫(SQLCE):6、[Index] attribute(翻譯)
- Windows Phone本機資料庫(SQLCE):7、Database mapping(翻譯)
- Windows Phone本機資料庫(SQLCE):8、DataContext(翻譯)
- Windows Phone本機資料庫(SQLCE):9、Connection Strings(翻譯)
- Windows Phone本機資料庫(SQLCE):10、建立資料庫(翻譯)
- Windows Phone本機資料庫(SQLCE):11、使用LINQ查詢資料庫(翻譯)
- Windows Phone本機資料庫(SQLCE):12、插入資料(翻譯)
- Windows Phone本機資料庫(SQLCE):13、更新資料(翻譯)
- Windows Phone本機資料庫(SQLCE):14、刪除資料(翻譯)
這裡我給出了一個簡單的增刪改查的樣本
先看基本的介面,下面3個button分別是添加,刪除,修改
下面是添加資訊的頁面
我總結主要有以下幾個步驟
1、根據實際情況需要建立一張資料表,這裡建立StudentTable.cs,寫好需要資料表列,定義相關的屬性。
在此之前,我們需要添加引用 System.Data.Linq ,並在cs代碼中using System.Data.Linq.Mapping。
StudentTable.cs代碼如下:
1 [Table]//define a table 2 public class StudentTable 3 { 4 private string schoolId; 5 6 [Column(IsPrimaryKey = true, CanBeNull = false, DbType = "NVarChar(20) NOT NULL", AutoSync = AutoSync.OnInsert)] 7 public string SchoolId 8 { 9 get { return schoolId; }10 set { schoolId = value; }11 }12 13 private string name;14 15 [Column]16 public string Name17 {18 get { return name; }19 set { name = value; }20 }21 22 23 private string address;24 [Column]25 public string Address26 {27 get { return address; }28 set { address = value; }29 }30 }
資料表的介紹請看Windows Phone本機資料庫(SQLCE):3、[table]attribute(翻譯)
2、再定義一個資料庫,建立一個類命名為StudentDataContext.cs,這裡要using System.Data.Linq,StudentDataContext要繼承於DataContext
StudentDataContext.cs代碼如下:
1 public class StudentDataContext : DataContext 2 { 3 public static string ConnectionString = "Data Source=isostore:/StudentInfo.sdf"; 4 //"Data Source=isostore:/StudentInfo.sdf"; 5 public StudentDataContext(string connectionString) 6 : base(connectionString) 7 { } 8 9 public Table<StudentTable> Students10 {11 get12 {13 return this.GetTable<StudentTable>();14 }15 }16 17 }
這裡需要注意到的是ConnectionString的格式,基本的格式是String format: "Data Source=isostore:/DIRECTORY/FILE.sdf";
DIRECTORY/FILE.sdf是自訂的路徑及資料庫名稱
詳情請查看MSDN文檔http://msdn.microsoft.com/zh-cn/library/hh202861(v=vs.92).aspx
3、建立資料庫,一般在程式啟動時就建立好資料庫,我們選在App.xaml.cs的Application_Launching方法裡建立,建立之前需要先檢測資料庫是否存在
1 private void Application_Launching(object sender, LaunchingEventArgs e) 2 { 3 using (StudentDataContext context = new StudentDataContext(StudentDataContext.ConnectionString)) 4 { 5 if (!context.DatabaseExists()) 6 { 7 context.CreateDatabase(); 8 } 9 }10 }
4、接下來就可以做基本的資料庫操作了,我定義一個類LINQHelper進行這些操作,代碼如下
1 public class LINQHelper 2 { 3 public static List<StudentTable> GetStudentInfo() //查 4 { 5 List<StudentTable> ls = new List<StudentTable>(); 6 using (StudentDataContext context = new StudentDataContext(StudentDataContext.ConnectionString)) 7 { 8 var query = from p in context.Students select p; 9 ls = query.ToList();10 }11 12 return ls;13 }14 15 public static void AddStudentInfo(string schoolId, string name, string address)//增16 {17 using (StudentDataContext context = new StudentDataContext(StudentDataContext.ConnectionString))18 {19 StudentTable s = new StudentTable();20 s.SchoolId = schoolId;21 s.Name = name;22 s.Address = address;23 context.Students.InsertOnSubmit(s);24 25 context.SubmitChanges();26 }27 }28 29 public static void DelStudentInfo(string schoolId)//刪30 {31 using (StudentDataContext context = new StudentDataContext(StudentDataContext.ConnectionString))32 {33 var query = from p in context.Students where p.SchoolId == schoolId select p;34 StudentTable studentToDelete = query.FirstOrDefault();35 36 context.Students.DeleteOnSubmit(studentToDelete);37 38 context.SubmitChanges();39 }40 }41 42 public static void UpdateStudentInfo(string oldSchoolId, string name, string address)//改43 {44 using (StudentDataContext context = new StudentDataContext(StudentDataContext.ConnectionString))45 {46 var query = from p in context.Students where p.SchoolId == oldSchoolId select p;47 StudentTable studentToUpdate = query.FirstOrDefault();48 49 studentToUpdate.Name = name;50 studentToUpdate.Address = address;51 52 context.SubmitChanges();53 }54 }55 }
在各個button的事件處理函數裡添加好相關的方法及參數即可。
這裡有個問題請教各位,我這裡採用資料繫結來綁定資料到ListBox,有什麼方法可以重新重新整理當前頁面,在做刪除操作後需要的重新整理頁面才能看到ListBox的項被刪除,我這裡採用的方法是導航到本頁面
1 NavigationService.Navigate(new Uri("/MainPage.xaml?guid=" + Guid.NewGuid(), UriKind.Relative));
感覺這種方法不是很好,不知道有沒有更好的解決方案,謝謝!!!
源碼下載