TA的每日心情 | 开心 2012-3-7 10:15 |
---|
签到天数: 11 天 [LV.3]偶尔看看II
|
WP7只有本地存储,自身是不带数据库存储的,所以想要在WP7上使用数据库只能通过使用第三方的嵌入式数据库。Perst 是一个简单,快速,便捷,面向对象适合Java与.NET的数据库,它在嵌入式数据库领域是鼎鼎有名的,并且其代码是开源的,我们可以在它的官方网站上下 载该数据库的所有的代码。
官方网站www.mcobject.com/perst_eval
下面是Perst数据库在Windows Phone 7上使用的一些基本的语法的简单总结:
1、创建数据库
1 | Storage storage = StorageFactory.Instance.CreateStorage(); //创建Perst存储Storage实例 |
2 | storage.Open( "PerstDemoDB.dbs"); // 打开Storage |
3 | Database DB = new Database(storage); //使用上面初始化的Storage实例创建数据库 |
2、创建数据库面向对象的类(作用相当于关系数据库的表)
01 | //创建一个数据库存储的面向对象的类的基类 要继承Perst.Persistent基类 |
02 | public class User: Perst.Persistent |
05 | //Perst使用反射来获取对象的值 需要在字段的前面加上[FullTextIndexable]标示 |
19 | public User(long Id, string name) |
25 | public override void OnLoad() |
30 | //获取数据库对象 一般会将数据库定义在App里面 |
31 | protected static Database DB |
33 | get { return ((App)Application.Current).DB; } |
36 | public override void Deallocate() |
38 | DB.DeleteRecord(this);//删除记录 |
44 | DB.UpdateFullTextIndex(this); |
3、添加记录
1 | User user= new User(1, "名字"); |
4、修改记录
5、删除记录
6、查询数据库
根据唯一的oid查询记录 oid是Perst数据库为每一个类的对象分配的一个唯一的值
1 | User user= DB.Select<User>("oid = " + this.NavigationContext.QueryString["oid"]).FirstOrDefault(); |
模糊查询
01 | // 查询所有包含了tbSearch.Text.ToLower()的结果FullTextSearchResult |
02 | FullTextSearchResult prefixes = DB.SearchPrefix(tbSearch.Text.ToLower(), 1000, 4000, false); |
03 | ObservableCollection<User> searchUsers = new ObservableCollection<User>(); |
04 | List<FullTextSearchHit> arrayRes = new List<FullTextSearchHit>(); |
05 | if (prefixes != null) arrayRes.AddRange(prefixes.Hits); |
06 | foreach (var hit in arrayRes) |
08 | if (hit.Document is User)//如果是联系人类型 FullTextSearchHit.Document 查询匹配的文件 |
10 | if (!searchcontacts.Contains((User)hit.Document)) |
11 | searchcontacts.Add((User)hit.Document); |
7、删除存储的类的所有对象
1 | DB.DropTable(typeof(User)); |
2 | DB.Storage.Commit();//完成 |
8、删除数据库
1 | var storage = ((App)App.Current).DB.Storage;//获取在App上定义的数据库存储 |
3 | using (var store = IsolatedStorageFile.GetUserStoreForApplication())//获取当前应用程序使用的本地存储文件 |
5 | if (store.FileExists("PerstDemoDB.dbs"))//找到数据库的存储文件 perst数据库文件是在本地存储中的 |
7 | store.DeleteFile("PerstDemoDB.dbs");//删除这个数据库的本地存储文件 |
|
|