WP7隻有本機存放區,自身是不帶資料庫儲存的,所以想要在WP7上使用資料庫只能通過使用第三方的嵌入式資料庫。Perst 是一個簡單,快速,便捷,物件導向適合Java與.NET的資料庫,它在嵌入式資料庫領域是鼎鼎有名的,並且其代碼是開源的,我們可以在它的官方網站上下載該資料庫的所有的代碼。
官方網站www.mcobject.com/perst_eval
下面是Perst資料庫在Windows Phone 7上使用的一些基本的文法的簡單總結:
1、建立資料庫
Storage storage = StorageFactory.Instance.CreateStorage(); //建立Perst儲存Storage執行個體
storage.Open( "PerstDemoDB.dbs"); // 開啟Storage
Database DB = new Database(storage); //使用上面初始化的Storage執行個體建立資料庫
2、建立資料庫物件導向的類(作用相當於關聯式資料庫的表)
//建立一個資料庫儲存的物件導向的類的基類 要繼承Perst.Persistent基類
public class User: Perst.Persistent
{
//定義欄位
//Perst使用反射來擷取對象的值 需要在欄位的前面加上[FullTextIndexable]標示
[FullTextIndexable]
public long id;
[FullTextIndexable]
public string name;
……
public long Id
{
get { return id; }
set { id= value; }
}
……
public User(long Id, string name)
{
id = id;
name = name;
}
public override void OnLoad()
{
base.OnLoad();
}
//擷取資料庫物件 一般會將資料庫定義在App裡面
protected static Database DB
{
get { return ((App)Application.Current).DB; }
}
public override void Deallocate()
{
DB.DeleteRecord(this);//刪除記錄
}
public void Save()
{
Store();//儲存 相當於儲存表
DB.UpdateFullTextIndex(this);
}
}
3、添加記錄
User user= new User(1, "名字");
DB.AddRecord(user);
DB.Storage.Commit();
4、修改記錄
user.Id=2
user.Save();
5、刪除記錄
user.Deallocate();
DB.Storage.Commit();
6、查詢資料庫
根據唯一的oid查詢記錄 oid是Perst資料庫為每一個類的對象分配的一個唯一的值
User user= DB.Select<User>("oid = " + this.NavigationContext.QueryString["oid"]).FirstOrDefault();
模糊查詢
// 查詢所有包含了tbSearch.Text.ToLower()的結果FullTextSearchResult
FullTextSearchResult prefixes = DB.SearchPrefix(tbSearch.Text.ToLower(), 1000, 4000, false);
ObservableCollection<User> searchUsers = new ObservableCollection<User>();
List<FullTextSearchHit> arrayRes = new List<FullTextSearchHit>();
if (prefixes != null) arrayRes.AddRange(prefixes.Hits);
foreach (var hit in arrayRes)
{
if (hit.Document is User)//如果是連絡人類型 FullTextSearchHit.Document 查詢匹配的檔案
{
if (!searchcontacts.Contains((User)hit.Document))
searchcontacts.Add((User)hit.Document);
}
}
7、刪除儲存的類的所有對象
DB.DropTable(typeof(User));
DB.Storage.Commit();//完成
8、刪除資料庫
var storage = ((App)App.Current).DB.Storage;//擷取在App上定義的資料庫儲存
storage.Close();//關閉它
using (var store = IsolatedStorageFile.GetUserStoreForApplication())//擷取當前應用程式使用的本機存放區檔案
{
if (store.FileExists("PerstDemoDB.dbs"))//找到資料庫的隱藏檔 perst資料庫檔案是在本機存放區中的
{
store.DeleteFile("PerstDemoDB.dbs");//刪除這個資料庫的本機存放區檔案
}
}
Perst嵌入式資料庫的介紹