.NET MAUI Sqlite程序应用-数据库配置(一)

项目名称:Ownership(权籍信息采集)

一、安装 NuGet 包

安装 sqlite-net-pcl

安装 SQLitePCLRawEx.bundle_green

二、创建多个表及相关字段 Models\OwnershipItem.cs

using SQLite;


namespace Ownership.Models
{
    public class fa_rural_base//基础数据表
    {
        [PrimaryKey, AutoIncrement]
        public int id { get; set; }
        public int fa_rural_id { get; set; }//关联镇村组id
        public string p_number { get; set; }//预编号
        public string obligee { get; set; }//权利人
        public string year_complate { get; set; }// 竣工年份
        public string year_homestead { get; set; }///宅基地取得时间
        public DateTime createtime { get; set; } // 创建时间
        public bool Done { get; set; }
    }

    public class fa_rural//镇村组
    {
        [PrimaryKey, AutoIncrement]
        public int id { get; set; }
        public string town { get; set; }//镇
        public string village { get; set; }//村
        public string v_group { get; set; }//组
        public int sort { get; set; }//排序
    }
    public class fa_rural_pic//权籍照片记录
    {
        [PrimaryKey, AutoIncrement]
        public int id { get; set; }
        public int fa_rural_base_id { get; set; }//关联基础数据表id
        public string pic_type { get; set; }//照片类型id
        public string pic_address { get; set; }//照片地址
        public DateTime createtime { get; set; } // 创建时间
        public int user_id { get; set; }//用户id
    }
    public class pic_type//照片类型
    {
        [PrimaryKey, AutoIncrement]
        public int id { get; set; }
        public string pic_type_name { get; set; }//照片类型名称
        public int sort { get; set; }//排序
        public int user_id { get; set; }//用户id
    }
    public class user_list//照片类型
    {
        [PrimaryKey, AutoIncrement]
        public int id { get; set; }
        public string user_name { get; set; }//用户名
        public string user_assword { get; set; }//用户密码
        public int authority { get; set; }//权限
    }
}

三、配置数据库(数据库文件名和路径)Constants.cs

namespace Ownership.Models;
public static class Constants
{

    public const string DatabaseFilename = "TodoSQLite.db3";//数据库文件名

    public const SQLite.SQLiteOpenFlags Flags =
        // 以读写模式打开数据库。
        SQLite.SQLiteOpenFlags.ReadWrite |
        // 如果数据库文件不存在,则创建它。
        SQLite.SQLiteOpenFlags.Create |
        // 启用多线程数据库访问,以便多个线程可以共享数据库连接。
        SQLite.SQLiteOpenFlags.SharedCache;

    public static string DatabasePath =>
        Path.Combine(FileSystem.AppDataDirectory, DatabaseFilename);
}

四、数据操作方法Data/OwnershipItem.cs

using SQLite;
using Ownership.Models;


namespace Ownership.Data
{
    public class OwnershipItemDatabase
    {
        private readonly SQLiteAsyncConnection _database;

        public OwnershipItemDatabase()
        {
            _database = new SQLiteAsyncConnection(Constants.DatabasePath, Constants.Flags);
            InitializeTables().Wait();
        }

        private async Task InitializeTables()
        {
            await _database.CreateTableAsync<fa_rural_base>();
            await _database.CreateTableAsync<fa_rural>();
            await _database.CreateTableAsync<fa_rural_pic>();
            await _database.CreateTableAsync<pic_type>();
            await _database.CreateTableAsync<user_list>();
        }

        // 读取所有 fa_rural_base
        public Task<List<fa_rural_base>> GetFaRuralBasesAsync()
        {
            return _database.Table<fa_rural_base>().ToListAsync();
        }

        // 根据ID读取单个 fa_rural_base
        public Task<fa_rural_base> GetFaRuralBaseAsync(int id)
        {
            return _database.Table<fa_rural_base>().Where(i => i.id == id).FirstOrDefaultAsync();
        }

        // 删除 fa_rural_base
        public Task<int> DeleteFaRuralBaseAsync(fa_rural_base item)
        {
            return _database.DeleteAsync(item);
        }

        // 创建或更新 fa_rural
        public Task<int> SaveFaRuralAsync(fa_rural item)
        {
            if (item.id != 0)
            {
                return _database.UpdateAsync(item);
            }
            else
            {
                return _database.InsertAsync(item);
            }
        }

        // 读取所有 fa_rural
        public Task<List<fa_rural>> GetFaRuralsAsync()
        {
            return _database.Table<fa_rural>().ToListAsync();
        }

        // 根据ID读取单个 fa_rural
        public Task<fa_rural> GetFaRuralAsync(int id)
        {
            return _database.Table<fa_rural>().Where(i => i.id == id).FirstOrDefaultAsync();
        }

        // 删除 fa_rural
        public Task<int> DeleteFaRuralAsync(fa_rural item)
        {
            return _database.DeleteAsync(item);
        }

        // 创建或更新 fa_rural_pic
        public Task<int> SaveFaRuralPicAsync(fa_rural_pic item)
        {
            if (item.id != 0)
            {
                return _database.UpdateAsync(item);
            }
            else
            {
                return _database.InsertAsync(item);
            }
        }

        // 读取所有 fa_rural_pic
        public Task<List<fa_rural_pic>> GetFaRuralPicsAsync()
        {
            return _database.Table<fa_rural_pic>().ToListAsync();
        }

        // 根据ID读取单个 fa_rural_pic
        public Task<fa_rural_pic> GetFaRuralPicAsync(int id)
        {
            return _database.Table<fa_rural_pic>().Where(i => i.id == id).FirstOrDefaultAsync();
        }

        // 删除 fa_rural_pic
        public Task<int> DeleteFaRuralPicAsync(fa_rural_pic item)
        {
            return _database.DeleteAsync(item);
        }

        // 创建或更新 pic_type
        public Task<int> SavePicTypeAsync(pic_type item)
        {
            if (item.id != 0)
            {
                return _database.UpdateAsync(item);
            }
            else
            {
                return _database.InsertAsync(item);
            }
        }

        // 读取所有 pic_type
        public Task<List<pic_type>> GetPicTypesAsync()
        {
            return _database.Table<pic_type>().ToListAsync();
        }

        // 根据ID读取单个 pic_type
        public Task<pic_type> GetPicTypeAsync(int id)
        {
            return _database.Table<pic_type>().Where(i => i.id == id).FirstOrDefaultAsync();
        }

        // 删除 pic_type
        public Task<int> DeletePicTypeAsync(pic_type item)
        {
            return _database.DeleteAsync(item);
        }

        // 创建或更新 user_list
        public Task<int> SaveUserListAsync(user_list item)
        {
            if (item.id != 0)
            {
                return _database.UpdateAsync(item);
            }
            else
            {
                return _database.InsertAsync(item);
            }
        }

        // 读取所有 user_list
        public Task<List<user_list>> GetUserListsAsync()
        {
            return _database.Table<user_list>().ToListAsync();
        }

        // 根据ID读取单个 user_list
        public Task<user_list> GetUserListAsync(int id)
        {
            return _database.Table<user_list>().Where(i => i.id == id).FirstOrDefaultAsync();
        }

        // 删除 user_list
        public Task<int> DeleteUserListAsync(user_list item)
        {
            return _database.DeleteAsync(item);
        }

    }
}

上一篇:Java实现Mysql批量插入与更新


下一篇:没有特斯拉的开源专利,就没有中国电动车产业今天的成就?