Windows Phone本機資料庫(SQLCE)系列翻譯文章索引及樣本程式

來源:互聯網
上載者:User

之前用蹩腳的英文嘗試翻譯了一些簡單的英文基礎教程,估計錯誤不少,在這裡將其整理好並給出一個簡單的樣本程式,請多指教。

  1. Windows Phone本機資料庫(SQLCE):1、介紹(翻譯)
  2. Windows Phone本機資料庫(SQLCE):2、LINQ to SQL(翻譯)
  3. Windows Phone本機資料庫(SQLCE):3、[table]attribute(翻譯)
  4. Windows Phone本機資料庫(SQLCE):4、[Column]attribute(翻譯)
  5. Windows Phone本機資料庫(SQLCE):5、[Association]attribute(翻譯)
  6. Windows Phone本機資料庫(SQLCE):6、[Index] attribute(翻譯)
  7. Windows Phone本機資料庫(SQLCE):7、Database mapping(翻譯)
  8. Windows Phone本機資料庫(SQLCE):8、DataContext(翻譯)
  9. Windows Phone本機資料庫(SQLCE):9、Connection Strings(翻譯)
  10. Windows Phone本機資料庫(SQLCE):10、建立資料庫(翻譯)
  11. Windows Phone本機資料庫(SQLCE):11、使用LINQ查詢資料庫(翻譯)
  12. Windows Phone本機資料庫(SQLCE):12、插入資料(翻譯)
  13. Windows Phone本機資料庫(SQLCE):13、更新資料(翻譯)
  14. 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));

感覺這種方法不是很好,不知道有沒有更好的解決方案,謝謝!!!

源碼下載

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.