C# · 12月 25, 2021

Windows 8 Metro用C#连接SQLite及创建数据库,数据表的增删改查的实现

  1.Metro中使用sqlite数据库具体步骤如下:

  1).下载sqlite for WinRT

  地址:http://www.sqlite.org/download.html

  下载Precompiled Binaries for Windows Runtime,这是一个Visual Studio的一个扩展,文件以vsix为后缀,直接双击运行即可。(如下图)

  2).为项目添加引用

  创建一个项目,在解决方案在选择“引用->添加引用”,在引用管理器的左边列表中选择Windows->扩展,然后再右边的列表中选中如下图所示:

注意:选择 sqlite for Windows Runtime 和 Microsoft Visual C++ Runtime Package

  3). 为项目添加C# 驱动

   在解决方案中,选择项目,单击右键,选择“管理NuGet程序包”,在管理器中进行如下图的操作:

安装完成后,你的项目的根目录下会多出两个文件:sqlite.cs和sqliteAsync.cs文件,我们就可以通过这两个类来操作sqlite了。

  2.创建数据库

  1).首先:声明一个MemberInfo类也就是表主键自动增长
复制代码 代码如下:
  public class MemberInfo

{

  [sqlite.AutoIncrement,sqlite.PrimaryKey]

    public int ID { set; get; }

     public string Name { set; get; }

  public int Age { set; get; }

    public string Address { set; get; }

}


  2).写一个方法用于创建数据库Member.sqlite和表MemberInfo
复制代码 代码如下:
 {

      string path =Path.Combine(Windows.Storage.ApplicationData.Current.LocalFolder.Path,”Member.sqlite”); //数据文件保存的位置

      using (var db = new sqlite.sqliteConnection(path)) //打开创建数据库和表

 {

        db.CreateTable<MemberInfo>();

}

}



  3).简单的操作sqlite数据库(增,删,改,查询)
复制代码 代码如下:
  public void Insert(MemberInfo data)

{

    try

{

       using (var db = newsqliteConnection(path))

      {

   db.Insert(data);

}

}

    catch(Exception e)

{

      throw e;

}

}

  publicvoid Delete(int id)

{

    try

  {

   T data = Select(id);

      using (var db = newsqliteConnection(path))

   {

  db.Delete(data);

   }

}

    catch(Exception e)

{

       throw e;

}

}

   public void Insert(T data)

{

     try

 {

        using (var db = newsqliteConnection(path))

       {

    db.Insert(data);

}

}

     catch(Exception e)

{

       throw e;

}

}

    publicvoid Delete(int id)

 {

     try

{

   T data = Select(id);

       using (var db = newsqliteConnection(path))

  {

   db.Delete(data);

}

}

     catch(Exception e)

{

      throw e;

}

}

  public MemberInfo Select(int id)

{

    try

     {

        MemberInfo data = null;

        using (var db = newsqliteConnection(path))

       {

          List<object> obj = db.Query(newTableMapping(typeof(MemberInfo)),string.Format(“Select * from MemberInfo where ID={0}”,id));

          if (obj != null&&obj.Count>0)

   {

     data = obj[0]  as MemberInfo;

  }

}

       return data;

}

    catch (Exception e)

{

      throw e;

}

}

  publicvoid Updata(MemberInfo data)

{

    try

{

      using (var db = newsqliteConnection(path))

{

db.Update(data);

}

}

    catch(Exception e)

{

        throw e;

}

}

  publicObservableCollection<MemberInfo> SelectAll()

{

    ObservableCollection<MemberInfo> list = newObservableCollection<MemberInfo>();

    using (var db =newsqliteConnection(path))

{

      List<object> query = db.Query(newTableMapping(typeof(MemberInfo)),”select * from MemberInfo”);

       foreach (var mem in query)

{

          MemberInfo info = mem asMemberInfo;

    list.Add(info);

}

}

    return list;

}