当前位置: 首页 > news >正文

.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; }//关联镇村组idpublic 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; }//关联基础数据表idpublic string pic_type { get; set; }//照片类型idpublic 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_basepublic Task<List<fa_rural_base>> GetFaRuralBasesAsync(){return _database.Table<fa_rural_base>().ToListAsync();}// 根据ID读取单个 fa_rural_basepublic Task<fa_rural_base> GetFaRuralBaseAsync(int id){return _database.Table<fa_rural_base>().Where(i => i.id == id).FirstOrDefaultAsync();}// 删除 fa_rural_basepublic Task<int> DeleteFaRuralBaseAsync(fa_rural_base item){return _database.DeleteAsync(item);}// 创建或更新 fa_ruralpublic Task<int> SaveFaRuralAsync(fa_rural item){if (item.id != 0){return _database.UpdateAsync(item);}else{return _database.InsertAsync(item);}}// 读取所有 fa_ruralpublic Task<List<fa_rural>> GetFaRuralsAsync(){return _database.Table<fa_rural>().ToListAsync();}// 根据ID读取单个 fa_ruralpublic Task<fa_rural> GetFaRuralAsync(int id){return _database.Table<fa_rural>().Where(i => i.id == id).FirstOrDefaultAsync();}// 删除 fa_ruralpublic Task<int> DeleteFaRuralAsync(fa_rural item){return _database.DeleteAsync(item);}// 创建或更新 fa_rural_picpublic Task<int> SaveFaRuralPicAsync(fa_rural_pic item){if (item.id != 0){return _database.UpdateAsync(item);}else{return _database.InsertAsync(item);}}// 读取所有 fa_rural_picpublic Task<List<fa_rural_pic>> GetFaRuralPicsAsync(){return _database.Table<fa_rural_pic>().ToListAsync();}// 根据ID读取单个 fa_rural_picpublic Task<fa_rural_pic> GetFaRuralPicAsync(int id){return _database.Table<fa_rural_pic>().Where(i => i.id == id).FirstOrDefaultAsync();}// 删除 fa_rural_picpublic Task<int> DeleteFaRuralPicAsync(fa_rural_pic item){return _database.DeleteAsync(item);}// 创建或更新 pic_typepublic Task<int> SavePicTypeAsync(pic_type item){if (item.id != 0){return _database.UpdateAsync(item);}else{return _database.InsertAsync(item);}}// 读取所有 pic_typepublic Task<List<pic_type>> GetPicTypesAsync(){return _database.Table<pic_type>().ToListAsync();}// 根据ID读取单个 pic_typepublic Task<pic_type> GetPicTypeAsync(int id){return _database.Table<pic_type>().Where(i => i.id == id).FirstOrDefaultAsync();}// 删除 pic_typepublic Task<int> DeletePicTypeAsync(pic_type item){return _database.DeleteAsync(item);}// 创建或更新 user_listpublic Task<int> SaveUserListAsync(user_list item){if (item.id != 0){return _database.UpdateAsync(item);}else{return _database.InsertAsync(item);}}// 读取所有 user_listpublic Task<List<user_list>> GetUserListsAsync(){return _database.Table<user_list>().ToListAsync();}// 根据ID读取单个 user_listpublic Task<user_list> GetUserListAsync(int id){return _database.Table<user_list>().Where(i => i.id == id).FirstOrDefaultAsync();}// 删除 user_listpublic Task<int> DeleteUserListAsync(user_list item){return _database.DeleteAsync(item);}}
}

相关文章:

  • Luma AI如何注册:文生视频领域的新星
  • target目录的文件上传controller,无需做静态映射。以及上传路径配置
  • TQZC706开发板教程:10G光口ping测试
  • C++中的解释器模式
  • Java -jar 运行 报 MalformedInputException: Input length = 1
  • Mongodb数据库基本操作
  • jeecg快速启动(附带本地运行可用版本下载)
  • 可穿戴设备:苹果“吃老底”、华为“忙复苏”、小米“再扩容”
  • Java数据类型及运算符及数组(与C语言对比)
  • 数据治理:让数据提取更高效、更准确的关键
  • 综述:光学测量技术趋势
  • 辛弃疾,笔墨剑影的一生
  • UDP协议详解
  • Linux网络-HttpServer的实现
  • DP读书:半导体物理考试重点
  • JavaScript 如何正确处理 Unicode 编码问题!
  • [nginx文档翻译系列] 控制nginx
  • PHP 的 SAPI 是个什么东西
  • Python连接Oracle
  • SQL 难点解决:记录的引用
  • 安卓应用性能调试和优化经验分享
  • 给Prometheus造假数据的方法
  • 如何优雅地使用 Sublime Text
  • 用Node EJS写一个爬虫脚本每天定时给心爱的她发一封暖心邮件
  • 优化 Vue 项目编译文件大小
  • 源码安装memcached和php memcache扩展
  • 终端用户监控:真实用户监控还是模拟监控?
  • ​queue --- 一个同步的队列类​
  • ​RecSys 2022 | 面向人岗匹配的双向选择偏好建模
  • #QT(智能家居界面-界面切换)
  • #多叉树深度遍历_结合深度学习的视频编码方法--帧内预测
  • #我与Java虚拟机的故事#连载11: JVM学习之路
  • (09)Hive——CTE 公共表达式
  • (1) caustics\
  • (1)Nginx简介和安装教程
  • (2)leetcode 234.回文链表 141.环形链表
  • (C#)if (this == null)?你在逗我,this 怎么可能为 null!用 IL 编译和反编译看穿一切
  • (C++哈希表01)
  • (二) 初入MySQL 【数据库管理】
  • (欧拉)openEuler系统添加网卡文件配置流程、(欧拉)openEuler系统手动配置ipv6地址流程、(欧拉)openEuler系统网络管理说明
  • (十三)Flink SQL
  • (算法)N皇后问题
  • (算法设计与分析)第一章算法概述-习题
  • (一)appium-desktop定位元素原理
  • (转)IIS6 ASP 0251超过响应缓冲区限制错误的解决方法
  • (转)socket Aio demo
  • (自适应手机端)行业协会机构网站模板
  • .Net core 6.0 升8.0
  • .Net Core 微服务之Consul(三)-KV存储分布式锁
  • .Net 路由处理厉害了
  • .net 逐行读取大文本文件_如何使用 Java 灵活读取 Excel 内容 ?
  • .net后端程序发布到nignx上,通过nginx访问
  • .NET精简框架的“无法找到资源程序集”异常释疑
  • .NET委托:一个关于C#的睡前故事
  • /deep/和 >>>以及 ::v-deep 三者的区别