C# Winform项目中简单使用Sqlite并在DataGridview中显示

1. SQLite概述

1.1 什么是 SQLite?

SQLite是一个进程内的库,实现了自给自足的、无服务器的、零配置的、事务性的 SQL 数据库引擎。它是一个零配置的数据库,这意味着与其他数据库不一样,您不需要在系统中配置。

1.2 为什么要用 SQLite?

  • 不需要一个单独的服务器进程或操作的系统(无服务器的)。
  • SQLite 不需要配置,这意味着不需要安装或管理。
  • 一个完整的 SQLite 数据库是存储在一个单一的跨平台的磁盘文件。
  • SQLite 是非常小的,是轻量级的,完全配置时小于 400KiB,省略可选功能配置时小于250KiB。
  • SQLite 是自给自足的,这意味着不需要任何外部的依赖。
  • SQLite 事务是完全兼容 ACID 的,允许从多个进程或线程安全访问。
  • SQLite 支持 SQL92(SQL2)标准的大多数查询语言的功能。
  • SQLite 使用 ANSI-C 编写的,并提供了简单和易于使用的 API。
  • SQLite 可在 UNIX(Linux, Mac OS-X, Android, iOS)和 Windows(Win32, WinCE, WinRT)中运行。

1.3 相关学习资源

SQLite官网:https://www.sqlite.org/
SQLite教程:https://www.runoob.com/sqlite/sqlite-tutorial.html

2. Microsoft.Data.Sqlite简单介绍和安装

2.1 概述

操作sqlite数据库之前你必须了解:ADO.NET、数据提供程序等知识点。目前在Winform项目中有两个常用的库:System.Data.Sqlite和Microsoft.Data.Sqlite。

  • System.Data.SQLite 的一个优点是它是由 SQLite 团队开发的,该团队已声明长期致力于支持它。支持多种数据类型,但是比较旧。
  • Microsoft.Data.Sqlite 的一个优点是它是由 Microsoft 开发的,并且可以假设它已通过 Entity Framework, .NET Core 等进行了良好的测试。只支持4中sqlite数据类类型,比较新。

在我们的测试项目中,使用的是Microsoft.Data.Sqlite,相关详细介绍可见官网:https://learn.microsoft.com/zh-cn/dotnet/navigate/data-access/

2.2 安装

在项目中,打开Nuget,搜索Microsoft.Data.Sqlite,点击【安装】
在这里插入图片描述

3. Winform测试项目

目标:实现生产数据(总产量、月产量、班产量)在数据库中的记录,并在DataGridview中根据时间戳显示相关记录。

1 初始化数据库连接

//设置连接参数
string connectstr = new SqliteConnectionStringBuilder()
{
    DataSource= "ProductRecords.db",
    Mode = SqliteOpenMode.ReadWriteCreate
}.ToString();
//连接到服务器
connection = new SqliteConnection(connectstr);

if (connection.State == System.Data.ConnectionState.Closed)
{
	//打开连接
    connection.Open();
	//创建表命令
    var createTableSqlStr = @"CREATE TABLE IF NOT EXISTS ProdTable (TimeStamp Datetime PRIMARY Key, Total INTEGER, Month INTEGER, Day INTEGER)";
    
    var createTablecmd = new SqliteCommand(createTableSqlStr, connection);
    createTablecmd.ExecuteReader();//执行表创建
}

2 增加数据记录条

public void AddRecord(DateTime stamp, uint total, uint month, uint day)
{
    if (connection.State == System.Data.ConnectionState.Open)
    {
        var addcmd = new SqliteCommand();
        addcmd.Connection = connection;
        addcmd.CommandText = "INSERT INTO ProdTable VALUES (@Stamp, @Total, @Month, @Day)";
        addcmd.Parameters.AddWithValue("@Stamp", stamp);
        addcmd.Parameters.AddWithValue("@Total", total);
        addcmd.Parameters.AddWithValue("@Month", month);
        addcmd.Parameters.AddWithValue("@Day", day);
        addcmd.ExecuteReader();
        RecordsChanged?.Invoke(null, EventArgs.Empty);
    }           
}

3. 筛选数据记录形成DataTable

public DataTable getDataTable(string startstamp)
{    
    if (connection.State == ConnectionState.Open)
    {
        string filterstr = "SELECT * FROM ProdTable";
        if(!string.IsNullOrEmpty(startstamp))
        {
        	//根据时间戳筛选表格
            filterstr = string.Format("SELECT * FROM ProdTable WHERE TimeStamp>'{0}'", startstamp);
        }
        SqliteCommand cmd = new SqliteCommand(filterstr, connection);
        SqliteDataReader sdr = cmd.ExecuteReader();

        DataTable data = new DataTable();
        data.Load(sdr, LoadOption.OverwriteChanges);

        return data;
    }
    else
    {
        return null;
    }
}

4. DataGridview中显示

//近一个月的时间戳
string starttime = DateTime.Now.AddMonths(-1).ToString("yyyy-MM-dd HH:mm:ss");
//获取DataTable
DataTable datatable = DataBaseManager.GetInstance.getDataTable(starttime);
//将获取到的DataTable赋值给DataGridview的DataSource
prodRecordsView.DataSource = datatable;

【附录】
示例程序:WinFormsSqliteApp

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

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

相关文章

vmware虚拟机安装openEuler

一、openEuler简介 openEuler是一款开源操作系统。当前openEuler内核源于Linux,支持鲲鹏及其它多种处理器,能够充分释放计算芯片的潜能,是由全球开源贡献者构建的高效、稳定、安全的开源操作系统,适用于数据库、大数据、云计算、…

游戏AI的创造思路-技术基础-自然语言处理

自然语言处理-可以对游戏AI特别是RPG类、语言类游戏进行“附魔”,开发出“随机应变”和你聊天的“女友”、“队友”或者是根据你定义的文本库来用接近自然语言的生成“语言”,推动游戏情景在受控范围内前进 目录 1. 自然语言处理定义 2. 发展历史 3. …

k8s部署单节点redis

一、configmap # cat redis-configmap.yaml apiVersion: v1 kind: ConfigMap metadata:name: redis-single-confignamespace: redis data:redis.conf: |daemonize nobind 0.0.0.0port 6379tcp-backlog 511timeout 0tcp-keepalive 300pidfile /data/redis-server.pidlogfile /d…

高考服务系统

摘 要 每年有大批考生在进行填写高考志愿时并不很清楚自己的高考分数适合那些高校以及专业。高考考生面临着未被高校录取,被调剂专业,甚至可能复读的问题。若能让考生轻松查询到高校录取、高校专业、高校招生等相关信息,能减少很大一部分考生…

《后端程序猿 · Caffeine 本地缓存》

📢 大家好,我是 【战神刘玉栋】,有10多年的研发经验,致力于前后端技术栈的知识沉淀和传播。 💗 🌻 CSDN入驻一周,希望大家多多支持,后续会继续提升文章质量,绝不滥竽充数…

SolrCloud Autoscaling 自动添加副本

SolrCloud Autoscaling 自动添加副本 前言 问题描述 起因是这样的,我在本地调试 Solr 源码(版本 7.7.3),用 IDEA 以 solrcloud 方式启动了 2 个 Solr 服务,如下所示: 上图的启动参数 VM Options 如下&am…

QT控制comboBox切换方法

目录 1. 效果2. 操作 1. 效果 如下图: 点击全切换雨天模式按钮 则 comboBox 文本显示为 “雨天模式”点击全切换正常模式按钮 则 comboBox 文本显示为 “雨天模式” 切换到 雨天模式 切换到 正常模式 2. 操作 使用 “setCurrentIndex” 方法,切换 combo…

vmware虚拟机增加磁盘容量

概述 当初始分配给虚拟机的磁盘空间不够时,需要从外部的主系统增加配给。 具体操作分为两步:一:通过虚拟机界面添加分配的磁盘配给;二:将新分配的配给给使用起来。 操作 添加磁盘配给 在虚拟机内部添加新分配的配给…

安装Intel Realsense D435i驱动与ROS包报错

1.下载安装realsense SDK 1.1 安装依赖 sudo apt install libudev-dev pkg-config libgtk-3-dev sudo apt install libusb-1.0-0-dev pkg-config sudo apt install libglfw3-dev sudo apt install libssl-dev1.2 权限 cd librealsense/ sudo cp config/99-realsense-libusb.…

独享代理VS共享代理,新手选择攻略

随着互联网的广泛普及和应用,涉及网络隐私、数据安全和网络访问控制的问题变得越来越重要。代理服务器作为一种常见的网络工具,可以在跨境电商、海外社媒、SEO投放、网页抓取等领域发挥作用,实现匿名访问并加强网络安全。在代理服务器类别中&…

GoLand 2024 for Mac GO语言集成开发工具环境

Mac分享吧 文章目录 效果一、下载软件二、开始安装1、双击运行软件(适合自己的M芯片版或Intel芯片版),将其从左侧拖入右侧文件夹中,等待安装完毕2、应用程序显示软件图标,表示安装成功3、打开访达,点击【文…

哪个牌子的充电宝牌子便宜好用?2024年性价比高充电宝排行榜!

在 2024 年,充电宝市场依旧琳琅满目,让人眼花缭乱。大家都在寻找那个既便宜又好用的充电宝,可面对众多品牌和产品,常常感到无从下手。别担心!经过深入的市场调研和实际使用体验,我们为您精心整理出了 2024 …

掌握空投,预见未来:空投教程网,撸毛党的必备工具

随着区块链技术的发展,越来越多的人开始关注这一领域。对于很多人来说,如何有效地参与区块链项目,尤其是空投活动,成为了一个重要的问题。为了解决这一问题,“空投教程网”应运而生。作为一个专为撸毛党设计的工具&…

【高中数学/基本不等式】已知:x,y皆大于1,且x+2y=4 求:1/(x-1)+1/(y-1)的最小值为?

【问题来源】 https://www.ixigua.com/7025123539728466469?logTag1c2fd2e305d60e6277ab 之第一题 【问题】 已知:x,y皆大于1,且x2y4 求:1/(x-1)1/(y-1)的最小值为? 【解答】 解: 若将(x2y)/41代入目标式&…

【PostgreSQL】数据基石:PostgreSQL的数据类型与表结构设计

目录 核心数据类型深入探索 基础数值与文本类型 日期与时间类型 特殊与复合类型 JSON与HSTORE 表的创建、修改与管理 创建与修改表结构 索引与性能优化 约束与数据完整性 核心数据类型深入探索 PostgreSQL以其多样化的数据类型著称,不仅包括标准SQL数据类型…

昇思25天学习打卡营第04天 | 数据集 Dataset

昇思25天学习打卡营第04天 | 数据集 Dataset 文章目录 昇思25天学习打卡营第04天 | 数据集 Dataset数据集加载数据集迭代数据集的变换shufflemapbatch 自定义数据集可随机访问数据集对象可迭代数据集生成器 总结打卡 数据集Dataset对原始数据进行封装、变换,为神经网…

光照老化试验箱在化工产品暴晒测试中的应用

概述 光照老化试验箱是一种模拟自然光照条件下材料老化情况的实验设备,广泛应用于化工、建材、电子、汽车等行业中对材料的耐候性、耐光性能等进行测试。通过模拟日光中的紫外线和温度等环境因素,加速材料老化过程,以此评估材料在长期使用中…

C语言编程-基于单链表实现贪吃蛇游戏

基于单链表实现贪吃蛇游戏 1.定义结构体参数 蛇行走的方向 蛇行走的状态 蛇身节点类 维护蛇的结构体型 2.游戏运行前预备工作 定位光标位置 游戏欢迎界面 绘制游戏地图(边界) 初始化游戏中的蛇身 创建食物 3.游戏运行 下一个位置是食物,就吃掉…

阿里云 SAE 助力修正商城 3 周内提升系统承载能力 20 倍,轻松应对春晚流量

作者:赵世振、刘松伟、朱坪" 从了解阿里云 SAE 到使用 SAE 进行应用架构升级共经历 3 周,这 3 周我们系统能承载的 QPS 从 5000 增强到 10 万,提升 20 倍,轻松应对了春晚大促流量洪波。并且,SAE 还帮助我们降低了…

超详细:安装Linux系统、虚拟现实教程

文章目录 一、如何下载并使用VMware虚拟机1.百度搜索vmware2.进入官网点击Workstation Pro链接3.博通注册对应的账号4.博通填写用户名、密码后直接登录会跳转到博通登录页5.个人使用选择个人版 二、国内镜像网站下载(Centos版本)三、镜像系统的安装1.打开…