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,点击【安装】
https://img-blog.csdnimg.cn/direct/42d0e08227ed47c59a8cdadd2f6b8594.png
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企服之家,中国第一个企服评测及商务社交产业平台。
页:
[1]