.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);}}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/349117.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

湖仓一体全面开启实时化时代

摘要&#xff1a;本文整理自阿里云开源大数据平台负责人王峰&#xff08;莫问&#xff09;老师在5月16日 Streaming Lakehouse Meetup Online 上的分享&#xff0c;主要介绍在新一代湖仓架构上如何进行实时化大数据分析。内容主要分为以下五个部分&#xff1a; Data Lake Dat…

java线程池讲解!核心参数

创建方式 | 构造方法 Executor构造方法 存放线程的容器&#xff1a; private final HashSet<Worker> workers new HashSet<Worker>(); 构造方法&#xff1a; public ThreadPoolExecutor(int corePoolSize,int maximumPoolSize,long keepAliveTime,TimeUnit uni…

vue页面和 iframe多页面无刷新方案和并行存在解决方案

面临问题 : back的后台以jsp嵌套iframe为主, 所以在前端框架要把iframe无刷新嵌套和vue页面进行并行使用,vue的keep-alive只能对虚拟dom树 vtree 进行缓存无法缓存iframe,所以要对iframe进行处理 tab标签的切换效果具体参考若依框架的tab切换,可以去若依看源码,若依源码没有实…

NodeClub:NodeJS构造开源交流社区

NodeClub&#xff1a; 连接每一个想法&#xff0c;NodeClub让社区更生动- 精选真开源&#xff0c;释放新价值。 概览 NodeClub是一个基于Node.js和MongoDB构建的社区系统&#xff0c;专为开发者和社区爱好者设计。它提供了一套完整的社区功能&#xff0c;包括用户管理、内容发…

进击算法工程师深度学习课程

"进击算法工程师深度学习课程"旨在培养学员在深度学习领域的专业技能和实战经验。课程涵盖深度学习基础理论、神经网络架构、模型优化方法等内容&#xff0c;通过项目实践和算法实现&#xff0c;帮助学员掌握深度学习算法原理和应用&#xff0c;提升在算法工程师领域…

在k8s中部署Elasticsearch高可用集群详细教程

Hi~&#xff01;这里是奋斗的小羊&#xff0c;很荣幸您能阅读我的文章&#xff0c;诚请评论指点&#xff0c;欢迎欢迎 ~~ &#x1f4a5;&#x1f4a5;个人主页&#xff1a;奋斗的小羊 &#x1f4a5;&#x1f4a5;所属专栏&#xff1a;C语言 &#x1f680;本系列文章为个人学习…

Unity EasyRoads3D插件使用

一、插件介绍 描述 Unity 中的道路基础设施和参数化建模 在 Unity 中使用内置的可自定义动态交叉预制件和基于您自己导入的模型的自定义交叉预制件&#xff0c;直接创建独特的道路网络。 添加额外辅助对象&#xff0c;让你的场景栩栩如生&#xff1a;桥梁、安全护栏、栅栏、墙壁…

03 SpringBoot 的工作原理

1.Spring Boot 的执行流程 Spring Boot 的执行流程主要分为两步&#xff1a; 初始化Spring Application实例 查看classpath类路径webApplicationType下是否存在某个特征类获取所有可用的应用初始化器类ApplicationContextInitializer获取所有可用的监听器类ApplicationListene…

【并集查找】839. 相似字符串组

本文涉及知识点 并集查找&#xff08;并差集) 图论知识汇总 LeetCode839. 相似字符串组 如果交换字符串 X 中的两个不同位置的字母&#xff0c;使得它和字符串 Y 相等&#xff0c;那么称 X 和 Y 两个字符串相似。如果这两个字符串本身是相等的&#xff0c;那它们也是相似的。…

HarmonyOS(36) DevEco Studio 配置debug和release

在android开发中可以在build.gradle来配置realease和debug,在HarmonyOS中可以通过build-profile.json5文件中通过buildModeSet配置&#xff1a; 在DevEco Studio 中可以通过下面来选择运行debug还是release&#xff1a; 我们可以通过BuildProfile.ets里面的静态变量获取当前…

全球经典智能仓储物流系统--大集锦

导语 大家好&#xff0c;我是社长&#xff0c;老K。专注分享智能制造和智能仓储物流等内容。 新书《智能物流系统构成与技术实践》人俱乐部 一、引言 在全球物流行业高速发展的今天&#xff0c;智能仓储物流系统已成为提升物流效率、降低成本的关键。 以下将详细介绍几种全球经…

在AI云原生时代应该如何应对复杂的算力环境

引言 随着在2019年ChatGPT4的爆火,AI这个之前常常被人觉得非常高深的技术渐渐的被越来越多的人们所了解,越来越多的公司、组织和开发者开始投入AI的使用和开发中来.随着AI和LLM的火热,算力资源也变的越来越紧缺,所以如何高效的管理和使用算力资源也变成了必须要面对的问题。 …

电池包断路单元DBU的预充电电阻应用案例

当电池组接触器闭合到电机和逆变器上时&#xff0c;逆变器电容器中会有电流涌入。这种非常高的电流至少可能会使接触器老化&#xff0c;并可能永久损坏接触器。 因此&#xff0c;当我们关闭电池组上的接触器时&#xff0c;我们分三个步骤执行此操作&#xff1a; 1.关闭主负极…

2024中国网络安全产品用户调查报告(发布版)

自2020年始&#xff0c;人类进入了21世纪的第二个十年&#xff0c;全球进入了百年未有之大变局&#xff0c;新十年的开始即被新冠疫情逆转了全球化发展的历程&#xff0c;而至2022年3月俄乌战争又突然爆发&#xff0c;紧接着2023年7月“巴以冲突"皱起&#xff0c;世界快速…

【StableDiffusion】Embedding 底层原理,Prompt Embedding,嵌入向量

Embedding 是什么&#xff1f; Embedding 是将自然语言词汇&#xff0c;映射为 固定长度 的词向量 的技术 说到这里&#xff0c;需要介绍一下 One-Hot 编码 是什么。 One-Hot 编码 使用了众多 5000 长度的1维矩阵&#xff0c;每个矩阵代表一个词语。 这有坏处&#xff0c…

通过Stream流对集合进行操作

Stream Api是JDK8提供的新特性&#xff0c;可以更为方便地对集合进行操作&#xff0c;比如我今天遇到的一个场景&#xff1a; 将本地的一个视频文件分成多块上传到Minio服务器&#xff0c;现在上传功能已经完成&#xff0c;需要调用minioClient对已经上传的文件重新合并成一个新…

[大模型]Phi-3-mini-4k-instruct langchain 接入

环境准备 在 autodl 平台中租赁一个 3090 等 24G 显存的显卡机器&#xff0c;如下图所示镜像选择 PyTorch–>2.0.0–>3.8(ubuntu20.04)–>11.8 。 接下来打开刚刚租用服务器的 JupyterLab&#xff0c;并且打开其中的终端开始环境配置、模型下载和运行演示。 创建工作…

Python | Leetcode Python题解之第149题直线上最多的点数

题目&#xff1a; 题解&#xff1a; class Solution:def maxPoints(self, points: List[List[int]]) -> int:n len(points)if n < 2:return nres 2for i in range(n):x1, y1 points[i][0], points[i][1]has {}for j in range(i 1, n):x2, y2 points[j][0], points…

FastAPI 作为H5中流式输出的后端

FastAPI 作为H5中流式输出的后端 最近大家都在玩LLM&#xff0c;我也凑了热闹&#xff0c;简单实现了一个本地LLM应用&#xff0c;分享给大家&#xff0c;百分百可以用哦&#xff5e;^ - ^ 先介绍下我使用的三种工具&#xff1a; Ollama&#xff1a;一个免费的开源框架&…

无需破解,基于AI翻译的Poedit翻译小助手PoeditHelper

背景&#xff1a; 应用在做国际化的时候是一件比较让人头大的事情&#xff0c;需要进行多国语言互译&#xff0c;做国际化的方式有很多&#xff0c;现阶段比较常用的方式是gettext的形式&#xff0c;并输出一个.po文件来做国际化&#xff0c;与之配套的有一款半开源软件叫Poedi…