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

    }
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

ArcGIS Pro SDK (三)Addin控件 1 按钮类

ArcGIS Pro SDK &#xff08;一&#xff09;Addin控件 目录 ArcGIS Pro SDK &#xff08;一&#xff09;Addin控件1 Addin控件2 ArcGIS Pro 按钮2.1 添加控件2.2 Code 3 ArcGIS Pro 按钮面板3.1 添加控件3.2 Code 4 ArcGIS Pro 菜单4.1 添加控件4.2 Code 5 ArcGIS Pro 分割按钮…

如何从零训练多模态大模型(预训练方向)

节前&#xff0c;我们星球组织了一场算法岗技术&面试讨论会&#xff0c;邀请了一些互联网大厂朋友、参加社招和校招面试的同学. 针对算法岗技术趋势、大模型落地项目经验分享、新手如何入门算法岗、该如何准备、面试常考点分享等热门话题进行了深入的讨论。 汇总合集&…

所爱隔山海,上海婚恋交友app开发,我奔向你

每每讲到婚恋&#xff0c;就有感叹“难”的声音&#xff0c;在婚恋市场上&#xff0c;到处充斥者“难”的声音&#xff0c;更有胜者&#xff0c;甚至发出了“难于上青天”的感叹。在婚恋市场蹉跎浮沉的青年俊女们&#xff0c;越挫越勇&#xff0c;向着爱的呼唤&#xff0c;一次…

Java工具-实现无损png转换jpg格式

目录 1、背景说明 2、通过代码实现格式转换 3、无损转化 4、说明 读取 PNG 图像&#xff1a; 创建空的 JPG 图像&#xff1a; 绘制 PNG 图像到 JPG 图像&#xff1a; 设置 JPG 图片压缩质量&#xff1a; 写入 JPG 文件并关闭流&#xff1a; 5、jpg转png 1、背景说明 …

Opencv图像梯度计算

Opencv图像梯度计算 Sobel算子 可以理解为是做边缘检测的一种方法。 首先说明自己对图像梯度的简单理解&#xff1a;简单理解就是图像的颜色发生变化的边界区域在X方向和Y方向上的梯度值 Gx Gy 而Gx和Gy处的梯度的计算—使用下面的公式来进行计算。 G x [ − 1 0 1 − 2 0 …

计算机网络(5) ARP协议

什么是ARP 地址解析协议&#xff0c;即ARP&#xff08;Address Resolution Protocol&#xff09;&#xff0c;是根据IP地址获取物理地址的一个TCP/IP协议。主机发送信息时将包含目标IP地址的ARP请求广播到局域网络上的所有主机&#xff0c;并接收返回消息&#xff0c;以此确定…

【MySQL】mysql中常见的内置函数(日期、字符串、数学函数)

文章目录 案例表日期函数字符串函数数学函数其他函数 案例表 emp students 表 exam_result 表 日期函数 注意current_time和now的区别 案例一&#xff1a; 创建一张表用来记录生日&#xff0c;表结构如下 添加日期&#xff1a; insert tmp (birthday) values (2003-01-3…

香港CN2线路回国加速CDN介绍

随着互联网的迅猛发展&#xff0c;跨境数据传输的需求日益增加。尤其对于中国内地用户来说&#xff0c;访问海外网站和应用时&#xff0c;常常会面临网络延迟高、加载速度慢的问题。为了优化这一体验&#xff0c;香港 CN2 线路回国加速 CDN 成为了许多企业和个人的首选解决方案…

从Log4j和Fastjson RCE漏洞认识jndi注入

文章目录 前言JNDI注入基础介绍靶场搭建漏洞验证注入工具 log4j RCE漏洞分析漏洞靶场检测工具补丁绕过 Fastjson RCE漏洞分析漏洞靶场检测工具补丁绕过 总结 前言 接着前文的学习《Java反序列化漏洞与URLDNS利用链分析》&#xff0c;想了解为什么 Fastjson 反序列化漏洞的利用…

Java中的方法重写与重载

在Java编程语言中&#xff0c;方法重写&#xff08;Override&#xff09;和方法重载&#xff08;Overload&#xff09;是实现代码多态性的两种基本方式。它们允许程序员以多种方式使用相同的方法名&#xff0c;增加了程序的可读性和可重用性&#xff0c;但它们的应用场景和规则…

Nginx+KeepAlived高可用负载均衡集群的部署

目录 一.KeepAlived补充知识 1.一个合格的群集应该具备的特点 2.健康检查&#xff08;探针&#xff09;常用的工作方式 3.相关面试问题 问题1 问题2 二.Keepealived脑裂现象 1.现象 2.原因 硬件原因 运用配置原因 3.解决 4.预防 方法1 方法2 方法3 方法4 三.…

【Spine学习04】之让角色动起来

1、切换左上角模式&#xff1a;设置改为动画 2、选择两个手臂的大臂节点 3、打开勾选自动关键帧按钮 4、开始K帧&#xff1a; Space空格可以快捷查看小黄人所有关键帧

英语翻译人工翻译优势

在全球化的时代&#xff0c;跨文化交流至关重要&#xff0c;而翻译则是连接不同语言和文化的重要桥梁。尽管近年来人工智能翻译取得了显著进展&#xff0c;但人工翻译的需求仍然无可替代&#xff0c;尤其是在专业和技术翻译领域。下面从专业角度阐述人工翻译相较于人工智能翻译…

python如何终止程序运行

方法1&#xff1a;采用sys.exit(0)&#xff0c;正常终止程序&#xff0c;从图中可以看到&#xff0c;程序终止后shell运行不受影响。 方法2&#xff1a;采用os._exit(0)关闭整个shell&#xff0c;从图中看到&#xff0c;调用sys._exit(0)后整个shell都重启了&#xff08;RESTAR…

[c++刷题]贪心算法.N01

题目如上: 首先通过经验分析&#xff0c;要用最少的减半次数&#xff0c;使得数组总和减少至一半以上&#xff0c;那么第一反应就是每次都挑数组中最大的数据去减半&#xff0c;这样可以是每次数组总和值减少程度最大化。 代码思路:利用大根堆去找数据中的最大值&#xff0c;…

VScode中连接并使用docker容器

前提条件&#xff1a; 1.在windows下安装Docker Desktop(方法可见下面的教程) Docker Desktop 安装使用教程-CSDN博客 2.在vscode安装3个必备的插件 3.先在ubuntu中把docker构建然后运行 4.打开vscode&#xff0c;按下图顺序操作 调试好之后上传到git上&#xff0c;然后后面…

李宏毅深度学习01——基本概念简介

视频链接 基本概念 Regression&#xff08;回归&#xff09;&#xff1a; 类似于填空 Classification&#xff08;分类&#xff09;&#xff1a; 类似于选择 Structure Learning&#xff08;机器学习&#xff09;&#xff1a; &#xff1f;&#xff1f; 机器学习找对应函数…

字符串排序-第13届蓝桥杯省赛Python真题精选

[导读]&#xff1a;超平老师的Scratch蓝桥杯真题解读系列在推出之后&#xff0c;受到了广大老师和家长的好评&#xff0c;非常感谢各位的认可和厚爱。作为回馈&#xff0c;超平老师计划推出《Python蓝桥杯真题解析100讲》&#xff0c;这是解读系列的第82讲。 字符串排序&#…

SSH协议

SSH协议简介 SSH&#xff08;Secure Shell&#xff09;是一种网络安全协议&#xff0c;用于在不安全的网络环境中提供加密的远程登录和其他网络服务。它通过加密和认证机制实现安全的访问和文件传输等业务&#xff0c;是Telnet、FTP等不安全远程shell协议的安全替代方案。 SSH协…

HSP_08章 断点调试

P100 断点调试 1. 基本介绍 一个实际场景 在开发中&#xff0c;新手程序员在查找错误时&#xff0c;这时有经验的程序员就会提示&#xff0c;可以用断点调试&#xff0c;一步一步的看源码执行的过程, 从而发现错误所在。 断点调试介绍 -基本介绍 2. 函数的调试