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?


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。

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

在项目中,打开Nuget,搜刮Microsoft.Data.Sqlite,点击【安装】

3. Winform测试项目

目标:实现生产数据(总产量、月产量、班产量)在数据库中的记载,并在DataGridview中根据时间戳表现相干记载。
1 初始化数据库毗连
  1. //设置连接参数
  2. string connectstr = new SqliteConnectionStringBuilder()
  3. {
  4.     DataSource= "ProductRecords.db",
  5.     Mode = SqliteOpenMode.ReadWriteCreate
  6. }.ToString();
  7. //连接到服务器
  8. connection = new SqliteConnection(connectstr);
  9. if (connection.State == System.Data.ConnectionState.Closed)
  10. {
  11.         //打开连接
  12.     connection.Open();
  13.         //创建表命令
  14.     var createTableSqlStr = @"CREATE TABLE IF NOT EXISTS ProdTable (TimeStamp Datetime PRIMARY Key, Total INTEGER, Month INTEGER, Day INTEGER)";
  15.    
  16.     var createTablecmd = new SqliteCommand(createTableSqlStr, connection);
  17.     createTablecmd.ExecuteReader();//执行表创建
  18. }
复制代码
2 增加数据记载条
  1. public void AddRecord(DateTime stamp, uint total, uint month, uint day)
  2. {
  3.     if (connection.State == System.Data.ConnectionState.Open)
  4.     {
  5.         var addcmd = new SqliteCommand();
  6.         addcmd.Connection = connection;
  7.         addcmd.CommandText = "INSERT INTO ProdTable VALUES (@Stamp, @Total, @Month, @Day)";
  8.         addcmd.Parameters.AddWithValue("@Stamp", stamp);
  9.         addcmd.Parameters.AddWithValue("@Total", total);
  10.         addcmd.Parameters.AddWithValue("@Month", month);
  11.         addcmd.Parameters.AddWithValue("@Day", day);
  12.         addcmd.ExecuteReader();
  13.         RecordsChanged?.Invoke(null, EventArgs.Empty);
  14.     }           
  15. }
复制代码
3. 筛选数据记载形成DataTable
  1. public DataTable getDataTable(string startstamp)
  2. {   
  3.     if (connection.State == ConnectionState.Open)
  4.     {
  5.         string filterstr = "SELECT * FROM ProdTable";
  6.         if(!string.IsNullOrEmpty(startstamp))
  7.         {
  8.                 //根据时间戳筛选表格
  9.             filterstr = string.Format("SELECT * FROM ProdTable WHERE TimeStamp>'{0}'", startstamp);
  10.         }
  11.         SqliteCommand cmd = new SqliteCommand(filterstr, connection);
  12.         SqliteDataReader sdr = cmd.ExecuteReader();
  13.         DataTable data = new DataTable();
  14.         data.Load(sdr, LoadOption.OverwriteChanges);
  15.         return data;
  16.     }
  17.     else
  18.     {
  19.         return null;
  20.     }
  21. }
复制代码
4. DataGridview中表现
  1. //近一个月的时间戳
  2. string starttime = DateTime.Now.AddMonths(-1).ToString("yyyy-MM-dd HH:mm:ss");
  3. //获取DataTable
  4. DataTable datatable = DataBaseManager.GetInstance.getDataTable(starttime);
  5. //将获取到的DataTable赋值给DataGridview的DataSource
  6. prodRecordsView.DataSource = datatable;
复制代码
【附录】
示例步调:WinFormsSqliteApp

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4