ToB企服应用市场:ToB评测及商务社交产业平台
标题:
C# Winform项目中简单利用Sqlite并在DataGridview中表现
[打印本页]
作者:
饭宝
时间:
2024-9-4 06:17
标题:
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
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/)
Powered by Discuz! X3.4