Lex.db 数据库使用方法(之一)

Lex.db是一款跨平台的小型数据库.本人在做windowsPhone项目时,为了能让该数据库可以直接用在windows8上的同一款软件上费了相当多功夫.应该说此款数据库使用起来并不是特别难,而是手头可用的资料少,因此纠结了自己很久.现在将其一般的使用流程写下,希望大家少走点弯路.有关给数据库的介绍可以查看:http://lexblog.azurewebsites.net/.

 

该数据库一般的操作流程如下:
1.定义一个实体类:该类就是将来要存入数据库的.
2.使用NuGet将lex.DB添加到工程中
3.往头文件中添加using 声明,定义和初始化使用的数据库:var db = new DbInstance("某个文件名");程序会建立该文件然后往其中存放数据
4.定义需要存储的数据在这个阶段中,生成高度优化的映射代码,以极快的读/写数据类。
db.Map<Contact>().Automap(i => i.Id);
5.初始化数据库实例:db.Initialize();
6.开始工作:增 删 改 查 等等
7.关闭数据库.
最简单的情况莫过于只存储一个普通类.假设我们需要将类 Person存入数据库.
首先是我们定义好的类以及里面的成员.

   public class Person
    {
        private int mId;
        public int Id
        {
            get { return mId; }
            set { mId = value; }
        }
        private int mAge;
        public int Age
        {
            set { Age = value; }
            get { return mAge; }
        }

        private string mName;
        public string Name
        {
            get { return mName; }
            set { mName = value; }
        }

        private string mJob;
        public string Job
        {
            get { return mJob; }
            set { mJob = value; }
        }
    }


 


然后我们需要将该类的信息存入数据库

using System.Linq;
using Lex.Db;

namespace .Example.Model
{
    public class PersonDB
    {
        //声明数据库中的一个表
        private static DbInstance sDb;
        //定义数据库中的表
        public static void LoadDatabase()
        {
            if (sDb == null)
            {
                sDb = new DbInstance("PersonInFo");
                sDb.Map<Person>().Automap(aPackageItem => aPackageItem.Id);
                sDb.Initialize();
            }
        }
        //往数据库中插入数据
        public static void InsertNewTrackingPackage(Person aPackage)
        {

            sDb.Table<Person>().Save(aPackage);
        }

        // 更新数据库中的表
        public static void UpdateTrackingPackage(Person aPackage)
        {
            if (sDb == null)
                return;
            sDb.Table<Person>().Save(aPackage);
        }

        // 按照从小到大的顺序排列数据库中的项目
        public static IOrderedEnumerable<Person> LoadAllTrackingPackages()
        {
            return sDb.Table<Person>().LoadAll().OrderByDescending(aPackage => aPackage.Id);
        }

        // 按照主键删除数据库中的项目
        public static bool DeleteTrackingPackageByKey(int aId)
        {
            var result = sDb.Table<Person>().DeleteByKey(aId);
            return result;
        }

        // 删除数据库
        public static void DisposeDatabase()
        {
            if (sDb != null)
            {
                sDb.Flush();
                sDb.Dispose();
                sDb = null;
            }
        }
    }
}


最后在需要的地方声明一个该类的对象,进行操作即可.


 

 

你可能感兴趣的:(数据库,C#,存储,WindowsPhone,Lex.DB)