• RT/Metro商店应用如何调用SQLite数据库


    RT/Metro商店应用如何调用SQLite数据库

    使用前,要安装:SQLite for Windows Runtime (Windows 8.1)(一个VS插件)、还有Visual C++ Runtime Package(如:Microsoft Visual C++ 2013 Runtime Package for Windows),
    同时,项目生成要修改为X86或者X64,总之不能使有和AnyCPU。我这里使用的是X86.
     
      private async void Create()
            {
                //数据文件保存的位置
                var dbPath = Path.Combine(Windows.Storage.ApplicationData.Current.LocalFolder.Path, "db1.sqlite");
                //打开创建数据库和表
                using (var db = new SQLite.SQLiteConnection(dbPath))
                {
                    //创建表
                    var result = db.CreateTable<Model.Person>();
                    await new MessageDialog("返回值:" + result).ShowAsync();
                }
            }
            private async void Insert()
            {
                //连接数据库
                var dbPath = Path.Combine(Windows.Storage.ApplicationData.Current.LocalFolder.Path, "db1.sqlite");
                using (var db = new SQLite.SQLiteConnection(dbPath))
                {
                    //插入操作。首先声明一个集合
                    ObservableCollection<Person> Collection = new ObservableCollection<Person>();
                    //单条插入语句
                    db.Insert(new Person() { FirstName = "宋兴柱1", LastName = "Sindrol" });
                    Collection.Add(new Person() { FirstName = "宋兴柱2", LastName = "Sindrol1" });
                    Collection.Add(new Person() { FirstName = "宋兴柱3", LastName = "Sindrol2" });
                    //多条插入集合
                    var result = db.InsertAll(Collection);
                    await new MessageDialog("返回值:" + result).ShowAsync();
                }
            }
            private async void Update()
            {
                //更新语句
                var dbPath = Path.Combine(Windows.Storage.ApplicationData.Current.LocalFolder.Path, "db1.sqlite");
                using (var db = new SQLite.SQLiteConnection(dbPath))
                {
                    SQLiteCommand cmd = db.CreateCommand("update person set FirstName='lisa' where LastName='Sindrol'");
                    var result = cmd.ExecuteNonQuery();
                    await new MessageDialog("返回值:" + result).ShowAsync();
                }
            }
    
            private async void Delete()
            {
                var dbPath = Path.Combine(Windows.Storage.ApplicationData.Current.LocalFolder.Path, "db1.sqlite");
                using (var db = new SQLite.SQLiteConnection(dbPath))
                {
                    //单行删除操作
                    db.Delete<Person>(1);
                    //多行删除
                    var result = db.DeleteAll<Person>();
                    await new MessageDialog("返回值:" + result).ShowAsync();
                }
            }
            private async void Select()
            {
                var dbPath = Path.Combine(Windows.Storage.ApplicationData.Current.LocalFolder.Path, "db1.sqlite");
                using (var db = new SQLite.SQLiteConnection(dbPath))
                {
                    //查询所有数据绑定到UI
                    List<object> list = db.Query(new TableMapping(typeof(Person)), "select *  from  Person");
                    gridView.ItemsSource = list;
                }
            }

    Person类如下图所示:

      class Person
        {
    
            [SQLite.AutoIncrement, SQLite.PrimaryKey]
            public int ID { get; set; }
            public string FirstName { get; set; }
            public string LastName { get; set; }
        }

    数据库效果图:

  • 相关阅读:
    android中statusbar高度的问题
    int和short做循环计数器时的效率问题
    解决Rectangle Packing问题【原创】
    10个android开源项目(转)
    自动编译.9.png文件
    通过wifi调试android程序
    HBase 性能优化笔记
    [转载]定制CentOS 6.3 自动安装盘
    region split时metascan出现regioninfo为空
    Google Dremel 原理 如何能3秒分析1PB
  • 原文地址:https://www.cnblogs.com/songxingzhu/p/4529885.html
Copyright © 2020-2023  润新知