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

news/2024/7/6 11:13:41

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

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

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

相关文章

不是大厂云用不起,而是五洛云更有性价比

明月代维的一个客户的大厂云境外云服务器再有几天就到期了,续费提醒那是提前一周准时到来,但是看到客户发来的续费价格截图,我是真的没忍住。这不就是在杀熟吗?就这配置续费竟然如此昂贵?说实话这个客户的服务器代维是…

七大排序算法的深入浅出(java篇)

🍁 个人主页:爱编程的Tom💫 本篇博文收录专栏:Java专栏👉 目前其它专栏:c系列小游戏 c语言系列--万物的开始_ 等等 🎉 欢迎 👍点赞✍评论⭐收藏💖三连支…

二叉树的前中后序遍历(递归法、迭代法)leetcode144、94/145

leetcode144、二叉树的前序遍历 给你二叉树的根节点 root ,返回它节点值的 前序 遍历。 示例 1: 输入:root [1,null,2,3] 输出:[1,2,3] 示例 2: 输入:root [] 输出:[] 示例 3: 输…

乘用车副水箱浮球式液位计传感器

浮球式液位计概述 浮球式液位计是一种利用浮球在液体中浮动的原理来测量液位的设备,广泛应用于各种工业自动化控制系统中,如石油化工、水处理、食品饮料等行业。它通过浮球的上下运动来测量液位的高低,具有结构简单、安装方便、测量范围广、…

线程池666666

1. 作用 线程池内部维护了多个工作线程,每个工作线程都会去任务队列中拿取任务并执行,当执行完一个任务后不是马上销毁,而是继续保留执行其它任务。显然,线程池提高了多线程的复用率,减少了创建和销毁线程的时间。 2…

02:项目1 (按键点灯)

按键点灯 1、嘉立创EDA的简要介绍2、硬件的选型与原理图设计3、PCB设计4、下单啦 1、嘉立创EDA的简要介绍 1、EDA的基础设置 2、新建工程 2、硬件的选型与原理图设计 ①在EDA软件按下 shiftf 打开嘉立创商城,然后在里面选型 ②打开数据手册,能看到基本…