WindowsPhone7中Perst数据库的使用(一)

好多天没有写博客了,最近在做项目 一直没时间,今天有时间就复习一下WP7中的数据库 内容是根据林政老师的教程复习

在项目中使用Perst数据库需要先引用数据库的PerstWP7.dll组件,下面介绍使用Perst数据库的一些基本步骤

1.创建数据库

语法事例:

//创建Perst存储Storage事例

Storage storage = StorageFactory.Instance.CreateStorage();

//打开storage
storage.Open("PerstDemoDB.dbs");
//使用上面创建的storage事例创建数据库
Database db = new Database(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 string Name
        {
          get { return name; }
          set { name = value; }
        }

        public User(long id, string name)
        {
            this.id=id;
            this.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();
            //模糊查询
            //查询所有包含了tbSeach.Text.ToLower() 的结果FullTextSearchResult
            FullTextSearchResult prefixes = DB.SearchPrefix(tbSeach.Text.ToLower(), 1000, 4000, false);
            ObservableCollection<User> searchUser = new ObservableCollection<User>();
            List<FullTextSearchHit> arrayRes = new List<FullTextSearchHit>();
            if (prefixes!=null)
            {
                arrayRes.AddRange(prefixes.Hits);
            }

            foreach (var hit in arrayRes)
            {
                //如果联系人类型 FullTextSearchHit.Document查询匹配的文件
                if (hit.Document is User)
                {
                    if (searchContacts.Contains((User)hit.Document))
                    {
                        searchContacts.Add((User)hit.Document);
                    }
                }
            }

7.删除存储类的所有对象

语法事例如下:

  DB.DropTable(typeof(User));
            DB.Storage.Commit();

8.删除数据库

语法事例如下:

 var storage = ((App)Application.Current).DB.Storage;//获取APP上定义的数据库存储
            storage.Close();//关闭它
            using (var store = IsolatedStorageFile.GetUserStorForApplication())//获取当前应用程序使用的独立存储文件
            {
                if (store.FileExists("PerstDemoDB.dbs"))//找到数据库的存储文件,perst数据库文件是在独立存储中的
                {
                    store.DeleteFile("PerstDemoDB.dbs");
                }
            }

 

 

转载于:https://www.cnblogs.com/MessageDream/archive/2012/05/30/2527082.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值