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

news2025/1/10 3:21:21

项目名称: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);
        }

    }
}

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

springboot和mybatis项目学习

#项目整体样貌 ##bean package com.example.demo.bean;public class informationBean {private int id;private String name;private String password;private String attchfile;public int getId() {return id;}public String getName() {return name;}public String getPas…

独具韵味的移动端 UI 风格

独具韵味的移动端 UI 风格

ACL原理和基础配置

ACL&#xff08;Access Control List&#xff0c;访问控制列表&#xff09;是一种用于控制网络设备或操作系统上资源访问权限的方法。ACL能够基于规则和条件来允许或拒绝对资源的访问。 标准ACL&#xff08;Standard ACL&#xff09;&#xff1a;基于源IP地址来进行流量过滤&a…

改进YOLOv8 | 主干网络篇 | YOLOv8 更换主干网络之 StarNet | 《重写星辰⭐》

本改进已集成到 YOLOv8-Magic 框架。 论文地址:https://arxiv.org/abs/2403.19967 论文代码:https://github.com/ma-xu/Rewrite-the-Stars 最近的研究引起了人们对“星形运算”(按元素乘法)在网络设计中未被充分利用的潜力的关注。虽然直观的解释很多,但其应用的基本原理…

Vue30-自定义指令:对象式

一、需求&#xff1a;创建fbind指定 要用js代码实现自动获取焦点的功能&#xff01; 二、实现 2-1、步骤一&#xff1a;绑定元素 2-2、步骤二&#xff1a;input元素获取焦点 此时&#xff0c;页面初始化的时候&#xff0c;input元素并没有获取焦点&#xff0c;点击按钮&…

计算机网络 —— 运输层(TCP三次握手)

计算机网络 —— 运输层&#xff08;TCP三次握手&#xff09; 三次握手第一次握手第二次握手第三次握手两次握手行不行&#xff1f; 我们今天来学习TCP的三次握手&#xff1a; 三次握手 TCP三次握手是TCP协议中建立连接的过程&#xff0c;旨在确保双方准备好进行可靠的通信。…

一个电话客服系统

简介 这是一个客服系统&#xff0c;使用的是USB电话盒。电话盒接入电话线 &#xff0c;然后再插在在计算机上。当有电话拨入时&#xff0c;可以在电脑中自动弹出拨入电话号码的相关客户资料&#xff0c;并能够自动录音。 安装 一、运行setup.exe 二、按照提示安装好程序后&am…

Android Jetpack Compose入门教程(二)

一、列表和动画 列表和动画在应用内随处可见。在本课中&#xff0c;您将学习如何利用 Compose 轻松创建列表并添加有趣的动画效果。 1、创建消息列表 只包含一条消息的聊天略显孤单&#xff0c;因此我们将更改对话&#xff0c;使其包含多条消息。您需要创建一个可显示多条消…

openh264 帧内预测编码过程源码分析

函数关系 说明&#xff1a; 可以看到完成帧内预测编码的核心函数就是 WelsMdI16x16、WelsMdI4x4、WelsMdI4x4Fast 、WelsMdIntraChroma 四个函数。 原理 WelsMdI16x16函数 功能&#xff1a;针对16x16像素块的帧内模式决策过程&#xff1a; 局部变量申明&#xff1b;根据宏块…

python如何终止程序运行

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

卡塔尔.巴林:海外媒体投放-宣发.发稿效果显著提高

引言 卡塔尔和巴林两国积极采取措施&#xff0c;通过海外媒体投放和宣发&#xff0c;将本国的商业新闻和相关信息传达给更广泛的受众。在这一过程中&#xff0c;卡塔尔新闻网、巴林商业新闻和摩纳哥新闻网等媒体起到了关键作用。通过投放新闻稿&#xff0c;这些国际化的媒体平…

UITableView之显示单组数据Demo

需求 UITableView实现显示单组数据。尝试设置不同行高度不同。 效果&#xff1a; 数据展示 实现 与之前分组显示数据的区别在于懒加载的数据模型不同。 &#xff08;1&#xff09;声明数据模型类 类的属性一定要和plist中数据的字段保持一致 interface CZhero : NSObject /…

idea在空工程中添加新模块并测试的步骤

ServicesTest是空的工程&#xff0c;没有pom文件。现在需要在ServicesTest目录下添加新模块作为新的工程&#xff0c;目的是写一下别的技术功能。 原先目录结构&#xff0c;ServicesTest是空的工程&#xff0c;没有pom文件。下面的几个模块是新的工程&#xff0c;相互独立。 1.…

数栈xAI:轻量化、专业化、模块化,四大功能革新 SQL 开发体验

在这个数据如潮的时代&#xff0c;SQL 已远远超越了简单的查询语言范畴&#xff0c;它已成为数据分析和决策制定的基石&#xff0c;成为撬动企业智慧决策的关键杠杆。SQL 的编写和执行效率直接关系到数据处理的速度和分析结果的深度&#xff0c;对企业洞察市场动态、优化业务流…

谁说Python GUI难?用pywebview打造现代化GUI界面

在Python的世界里&#xff0c;我们经常需要为程序添加一个图形用户界面&#xff08;GUI&#xff09;。传统上&#xff0c;Tkinter、PyQt或Kivy等库是常用的选择。但是&#xff0c;今天我们要介绍的是一个更简单、更现代的方法——pywebview。它让你可以使用HTML、CSS和JavaScri…

OpenCV查找图像中的轮廓并且展示

1、查找轮廓随机用不同的颜色画出 import cv2 import numpy as npdef get_contour_colors(num_contours):# 定义颜色表 (BGR 格式)colors [(255, 0, 0),(255, 50, 0),(255, 100, 0),(255, 150, 0),(255, 200, 0),(255, 255, 0),(200, 255, 0),(150, 255, 0),(100, 255, 0),(5…

2.6数据报与虚电路

数据报 当作为通信子网用户的端系统要发送一个报文时&#xff0c;在端系统中实现的高层协议先把报文拆成若干个带有序号的数据单元&#xff0c;并在网络层加上地址等控制信息后形成数据报分组(即网络层PDU)中间结点存储分组一段很短的时间&#xff0c;找到最佳的路由后&#x…

【StructueEngineering】Wind Load Combination Patterns风荷载组合模式

文章目录 Combination PatternsBasic Rules of Combinations组合的基本规律Specific Combination Patterns1. First 8 Combinations (1 to 8)2. Middle 8 Combinations (9 to 16)3. Last 8 Combinations (17 to 24) Summary of CombinationsKey Variables and Parameters with …

Base64编码方式的介绍及其编码解码

一、Base64是什么 Base64是一种用于将二进制数据编码为ASCII字符的编码方式&#xff0c;主要目的是为了能够在文本环境中传输和存储二进制数据。这种编码方式广泛应用于电子邮件、HTTP协议和其他需要传输或存储二进制数据的地方。 二、发明Base64编码的原因 Base64编码的发明解…

《转载》前苏联的三进制计算机Setun

1、苏联的三进制计算机概述 早在 1956 年&#xff0c;就需要创建一种可在大学和实验室中使用的实用数字计算机模型。为此&#xff0c;需要一种易于学习、可靠、廉价但同时高效、专为大规模使用而设计的小型计算机。 对这种机器的要求&#xff1a;运行速度必须等于每秒数百次操作…