Windows Phone Mango編程實踐——本機資料庫

來源:互聯網
上載者:User
文章目錄
  • 資料庫查詢
  • 更新資料
  • 更改資料庫結構描述
  • 資料庫安全

 

Windows Phone Mango編程實踐

Windows Phone Mango Programming Practice

本機資料庫

Windows Phone Mango,可以將關係資料存放區在本機資料庫中,本機資料庫作為一個檔案儲存體在應用程式的隔離儲存區 (Isolated Storage)空間。Windows Phone應用程式使用LINQ to SQL執行資料庫的所有操作。LINQ to SQL用於定義資料庫結構描述、選擇資料,並將更改儲存到資料庫檔案儲存在在隔離儲存區 (Isolated Storage)空間。LINQ to SQL是.Net架構的ORM(對象關係映射)平台的資料庫。當應用程式執行LINQ語句在運行時,它轉換為Transact - SQL對資料庫執行操作;一旦資料庫返回查詢結果,LINQ to SQL將資料轉換為應用程式物件。

LINQ to SQL提供了物件導向的方法,用於處理資料,包括物件模型和運行時。LINQ to SQL物件模型是由System.Data.Linq.DataContext對象構成,它充當Proxy 伺服器的本機資料庫。LINQ to SQL 運行時負責串連本機資料庫和應用程式的DataContext對象,。DataContext對象即資料內容包含表的對象,其中每個代表在資料庫中的表。

圖6-4 LINQ to SQL

Windows Phone Mango的應用程式使用的LINQ to SQL訪問本機資料庫,LINQ to SQL提供一個用於操作儲存在資料庫中的資料的物件導向的方法。System.Data.Linq.DataContext類串連應用程式的物件模型與資料庫中的資料。

在建立本機資料庫後,可以使用 LINQ 和資料內容使用本機資料庫。以下部分說明如何選擇、 插入、 更新和刪除資料庫中的資料。

資料庫查詢

Windows Phone使用Language-integrated Query (LINQ) (LINQ) 查詢資料庫。因為 SQL 查詢在 LINQ 中引用的對象映射到資料庫中的記錄,LINQ to SQL 有別於其他 LINQ 技術正在執行的查詢的方式。典型的 LINQ 查詢在應用程式層在記憶體中執行。LINQ to SQL 中,使用的運行庫對象關係能力與每個 LINQ 查詢以 TRANSACT-SQL 翻譯,然後直接在資料庫中執行。這樣設計在選擇大型資料庫的少數幾個記錄的查詢時效能會明顯增強。

在下面的樣本中,一個名為toDoDB的DataContext對象的 LINQ to SQL 查詢和結果放到ObservableCollection的ToDoItem對象命名的待辦事項。由於順延強制的資料庫查詢不實際執行之前的待辦事項集合進行執行個體化。


 

// Define query to gather all of the to-do items.

var toDoItemsInDB = from ToDoItem todo in toDoDB.ToDoItems

select todo;

 

// Execute query and place results into a collection.

ToDoItems = new ObservableCollection<ToDoItem>(toDoItemsInDB);

 

插入資料

將資料插入資料庫是一個兩步過程。首先將對象添加到資料內容中,然後調用SubmitChanges方法來保持資料作為資料庫中的行的資料內容。

在下面的樣本中,建立一個ToDoItem對象並添加到的待辦事項可觀察的集合和相應的資料庫表中名為toDoDB的資料內容。

// Create a new to-do item based on text box.

ToDoItem newToDo = new ToDoItem { ItemName = newToDoTextBox.Text };

 

// Add the to-do item to the observable collection.

ToDoItems.Add(newToDo);

 

// Add the to-do item to the local database.

toDoDB.ToDoItems.InsertOnSubmit(newToDo);

注意:

直到調用SubmitChanges方法的資料不會儲存到資料庫。

更新資料

更新本機資料庫中的資料有三個步驟。第一,要更新的對象資料庫中查詢。第二,修改所需的對象。最後,調用SubmitChanges方法,以將所做的更改儲存到本機資料庫。

下面的程式碼範例顯示了應用程式OnNavigatedFrom方法中調用SubmitChanges更新本機資料庫中的資料。在SubmitChanges方法調用之前,資料是不會更新至資料庫的。

protected override void OnNavigatedFrom(System.Windows.Navigation.NavigationEventArgs e)

{

//Call base method

base.OnNavigatedFrom(e);

 

//Save changes to the database

toDoDB.SubmitChanges();

}

刪除資料

刪除資料庫中的資料也包括三個步驟。首先,查詢的資料庫中刪除的對象。然後,取決於您是否要刪除一個或多個對象,調用DeleteOnSubmit或DeleteAllOnSubmit方法,分別放在掛起的刪除狀態的那些對象。最後,調用SubmitChanges方法,以將所做的更改儲存到本機資料庫。

在下面的樣本中,一個ToDoItem對象是從名為toDoDB的資料庫中刪除。因為只有一個對象將被刪除,在SubmitChanges之前調用DeleteOnSubmit方法。

//Get a handle for the to-do item bound to the button

ToDoItem toDoForDelete = button.DataContext as ToDoItem;

 

//Remove the to-do item from the observable collection

ToDoItems.Remove(toDoForDelete);

 

//Remove the to-do item from the local database

toDoDB.ToDoItems.DeleteOnSubmit(toDoForDelete);

 

//Save changes to the database

toDoDB.SubmitChanges();

注意:

直到調用SubmitChanges方法,是不從資料庫刪除資料。

更改資料庫結構描述

Widows Phone應用程式可能需要更改本機資料庫架構。Microsoft.Phone.Data.Linq命名空間提供了有關於資料庫結構描述更改的DatabaseSchemaUpdater類。

DatabaseSchemaUpdater類可以執行資料庫,例如,添加表、 列、 索引或協會的添加劑更改。對於更複雜的更改,需要建立一個新的資料庫,並將資料複製到新的架構。DatabaseSchemaUpdater類提供了可用於以編程方式區分您的資料庫的不同版本的DatabaseSchemaVersion屬性。

資料庫不會反映來自DatabaseSchemaUpdater對象的更新,直到調用Execute方法。當調用該方法時,所有的更改將被提交到本機資料庫作為單個事務,包括版本更新。

下面的樣本示範如何使用DatabaseSchemaUpdater類修改基於DatabaseSchemaVersion屬性的資料庫。

using (ToDoDataContext db = new ToDoDataContext(("isostore:/ToDo.sdf")))

{

//Create the database schema updater

DatabaseSchemaUpdater dbUpdate = db.CreateDatabaseSchemaUpdater();

 

//Get database version

int dbVersion = dbUpdate.DatabaseSchemaVersion;

 

//Update database as applicable

if (dbVersion < 5)

{ //Copy data from existing database to new database

MigrateDatabaseToLatestVersion();

}

else if (dbVersion == 5)

{ //Add column to existing database to match the data context

dbUpdate.AddColumn<ToDoItem>("TaskURL");

dbUpdate.DatabaseSchemaVersion = 6;

dbUpdate.Execute();

}

}

 

注意:

在應用程式更新過程中不會改變任何隔離儲存區 (Isolated Storage),包括本機資料庫檔案中儲存的檔案。

資料庫安全

本機資料庫提供密碼保護和加密來協助保護您的資料庫。當您使用資料庫密碼時,加密整個資料庫。

下面的樣本示範如何建立加密的資料庫。

// Create the data context, specify the database file location and password

ToDoDataContext db = new ToDoDataContext ("Data Source='isostore:/ToDo.sdf';Password='securepassword'");

 

// Create an encrypted database after confirming that it does not exist

if (!db.DatabaseExists()) db.CreateDatabase();

注意:

如果只有有限的非索引列需要進行加密,可通過添加到資料庫之前將資料加密,而不是加密整個資料庫來實現更好的效能。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.