恒美微站 Logo 恒美微站
  • 首页
  • 关于我们
  • 建站服务
  • 主题模板
  • 案例展示
  • 资讯中心
  • 联系我们

C# 中使用 SQLite 实现数据查询、删除与 DataGridView 分页显示

  • 首页
  • 资讯中心
  • /
  • C# 中使用 SQLite 实现数据查询、删除与 DataGridView 分页显示

相关资讯

cereal 开源 C++ 序列化库深度解析:header-only 时代的“零仪式感“序列化方案 2026/8/29 20:45:12
数据库存储过程与函数实战:从基础语法到架构应用全解析 2026/8/29 20:45:12
面向初学者的 Python:从零经验到用 Python 编写第一个有用的程序 2026/8/29 20:45:12

最新资讯

如果你今年准备找测试开发工作,我建议你认真看看DeepSeek Harness
数学建模优化难题破解:随机搜索算法原理与应急选址实战
前端八股文全解析:从核心原理到高效学习路线
从2018字节跳动前端笔试题复盘JS核心考点与面试演进逻辑
从零搭建团队级AI工作台:基于Dify的设计协作全流程实战
第59章 匹配理论到匹配算法

今日推荐

云计算SPI三类服务模式是逐层抽象的关系:IaaS提供最底层的硬件资源,PaaS在IaaS基础上封装了开发运行环境,SaaS则进一步封装为可直接使用的软件
最新稳定版(Python 3.14):这是目前官方推荐的最新稳定版本。作为最后一个采用传统“3.x”命名的版本
etc目录下的profile.d文件目录设置环境变量和全局脚本shell

本周热门

Nextcloud 桌面客户端:把同步交给它,你只管改文件
如何将 HTML 转成 Word 文档且格式不丢失?html-to-docx 使用教程
Anki 批量操作卡片完整指南:一次搞定上千张,不再逐张修改

本月精选

如何用DamaiHelper实现演唱会门票的智能自动化抢购:完整技术解决方案指南
第4篇:59 倍性能差距的索引瓶颈定位——一次教科书级的全表扫描调优
终极歌词批量下载神器:5分钟解决离线音乐库歌词同步难题

C# 中使用 SQLite 实现数据查询、删除与 DataGridView 分页显示

发布时间:2026/8/29 20:45:12
C# 中使用 SQLite 实现数据查询、删除与 DataGridView 分页显示 1. 引言在桌面应用开发中SQLite 凭借轻量、零配置、单文件存储等优势成为 C# WinForms 项目中非常流行的嵌入式数据库。而 DataGridView 则是展示表格数据最常用的控件。本文将手把手带你实现一个完整的示例使用 SQLite 存储数据在 C# 中实现查询、删除操作并将查询结果分页显示在 DataGridView 控件中。2. 准备工作与环境搭建2.1 安装 NuGet 包在 Visual Studio 中创建 WinForms 项目后通过 NuGet 包管理器安装 SQLite 驱动Install-Package System.Data.SQLite.Core也可以使用微软官方的 Microsoft.Data.SqliteInstall-Package Microsoft.Data.Sqlite本文以System.Data.SQLite为例进行讲解。2.2 引入命名空间在代码文件顶部引入以下命名空间usingSystem;usingSystem.Data;usingSystem.Data.SQLite;usingSystem.Windows.Forms;3. 创建数据库与数据表3.1 初始化数据库我们创建一个用户信息表包含 Id、Name、Age、Email 四个字段publicclassDatabaseHelper{privatestaticstringconnectionStringData Sourcetest.db;Version3;;publicstaticvoidInitializeDatabase(){using(varconnnewSQLiteConnection(connectionString)){conn.Open();stringsql CREATE TABLE IF NOT EXISTS Users ( Id INTEGER PRIMARY KEY AUTOINCREMENT, Name TEXT NOT NULL, Age INTEGER NOT NULL, Email TEXT );;using(varcmdnewSQLiteCommand(sql,conn)){cmd.ExecuteNonQuery();}}}}3.2 插入测试数据为了方便演示分页效果我们插入一些测试数据publicstaticvoidInsertTestData(){using(varconnnewSQLiteConnection(connectionString)){conn.Open();for(inti1;i50;i){stringsqlINSERT INTO Users (Name, Age, Email) VALUES (name, age, email);using(varcmdnewSQLiteCommand(sql,conn)){cmd.Parameters.AddWithValue(name,用户i);cmd.Parameters.AddWithValue(age,20i%30);cmd.Parameters.AddWithValue(email,useriexample.com);cmd.ExecuteNonQuery();}}}}4. 分页查询实现4.1 分页查询的核心 SQLSQLite 使用LIMIT和OFFSET关键字实现分页SELECT*FROMUsersORDERBYIdLIMITpageSizeOFFSEToffset;其中offset (当前页码 - 1) * 每页条数。4.2 查询总记录数分页显示需要知道总共有多少条数据以便计算总页数publicstaticintGetTotalCount(){using(varconnnewSQLiteConnection(connectionString)){conn.Open();stringsqlSELECT COUNT(*) FROM Users;using(varcmdnewSQLiteCommand(sql,conn)){returnConvert.ToInt32(cmd.ExecuteScalar());}}}4.3 分页查询方法publicstaticDataTableGetUsersByPage(intpageNumber,intpageSize){DataTabledtnewDataTable();using(varconnnewSQLiteConnection(connectionString)){conn.Open();stringsqlSELECT * FROM Users ORDER BY Id LIMIT pageSize OFFSET offset;;using(varcmdnewSQLiteCommand(sql,conn)){cmd.Parameters.AddWithValue(pageSize,pageSize);cmd.Parameters.AddWithValue(offset,(pageNumber-1)*pageSize);using(varadapternewSQLiteDataAdapter(cmd)){adapter.Fill(dt);}}}returndt;}5. 删除操作实现5.1 按 Id 删除单条记录publicstaticboolDeleteUser(intid){using(varconnnewSQLiteConnection(connectionString)){conn.Open();stringsqlDELETE FROM Users WHERE Id id;;using(varcmdnewSQLiteCommand(sql,conn)){cmd.Parameters.AddWithValue(id,id);returncmd.ExecuteNonQuery()0;}}}5.2 批量删除publicstaticboolDeleteUsers(int[]ids){using(varconnnewSQLiteConnection(connectionString)){conn.Open();using(vartxconn.BeginTransaction()){try{foreach(intidinids){stringsqlDELETE FROM Users WHERE Id id;;using(varcmdnewSQLiteCommand(sql,conn,tx)){cmd.Parameters.AddWithValue(id,id);cmd.ExecuteNonQuery();}}tx.Commit();returntrue;}catch{tx.Rollback();returnfalse;}}}}6. DataGridView 分页显示6.1 窗体界面设计在窗体上放置以下控件一个DataGridView控件用于显示数据两个Button控件上一页、下一页一个Label控件用于显示当前页码信息一个TextBox控件用于输入每页显示条数。6.2 分页逻辑实现publicpartialclassMainForm:Form{privateintcurrentPage1;privateintpageSize10;privateinttotalPages1;publicMainForm(){InitializeComponent();DatabaseHelper.InitializeDatabase();DatabaseHelper.InsertTestData();LoadPage();}privatevoidLoadPage(){inttotalCountDatabaseHelper.GetTotalCount();totalPages(int)Math.Ceiling((double)totalCount/pageSize);if(currentPage1)currentPage1;if(currentPagetotalPages)currentPagetotalPages;DataTabledtDatabaseHelper.GetUsersByPage(currentPage,pageSize);dataGridView1.DataSourcedt;lblPageInfo.Text$第{currentPage}/{totalPages}页共{totalCount}条;btnPrev.EnabledcurrentPage1;btnNext.EnabledcurrentPagetotalPages;}privatevoidbtnPrev_Click(objectsender,EventArgse){currentPage--;LoadPage();}privatevoidbtnNext_Click(objectsender,EventArgse){currentPage;LoadPage();}}6.3 删除选中行在 DataGridView 中添加删除按钮列或在选中行后点击删除按钮privatevoidbtnDelete_Click(objectsender,EventArgse){if(dataGridView1.SelectedRows.Count0){MessageBox.Show(请先选择要删除的行);return;}intidConvert.ToInt32(dataGridView1.SelectedRows[0].Cells[Id].Value);if(DatabaseHelper.DeleteUser(id)){MessageBox.Show(删除成功);LoadPage();// 刷新当前页}else{MessageBox.Show(删除失败);}}7. 完整运行效果运行程序后DataGridView 会显示第一页的 10 条数据。点击「下一页」按钮可以查看后续数据点击「删除」按钮可以删除选中的记录删除后当前页自动刷新。下面是整体流程的示意图点击下一页点击删除程序启动初始化数据库插入测试数据加载第一页数据DataGridView 显示用户操作currentPage执行 DELETE 语句刷新当前页8. 常见问题与注意事项8.1 分页后删除导致页码越界当删除当前页最后一条数据后当前页可能已经没有数据了。此时需要判断并回退页码if(dataGridView1.Rows.Count0currentPage1){currentPage--;}8.2 大数据量下的性能优化当数据量很大时建议在Id字段上建立索引并避免使用SELECT *只查询需要的字段CREATEINDEXidx_users_idONUsers(Id);8.3 参数化查询防注入始终使用参数化查询参数名而不是拼接 SQL 字符串这是防止 SQL 注入的最佳实践。9. 总结本文通过一个完整的 C# WinForms 示例演示了如何使用 SQLite 实现数据的查询、删除操作并通过LIMIT和OFFSET实现 DataGridView 的分页显示。核心要点包括使用System.Data.SQLite连接 SQLite 数据库通过LIMIT和OFFSET实现高效分页使用参数化查询保证安全性通过页码状态管理实现 DataGridView 的翻页交互。你可以在此基础上扩展搜索、排序、编辑等功能打造一个功能完善的桌面数据管理工具。

关于恒美微站

恒美微站专注于为个体商户、工作室提供极简自助建站服务,让每个人都能轻松拥有专业网站。

快速链接

  • 关于我们
  • 建站服务
  • 主题模板
  • 案例展示
  • 资讯中心

服务项目

  • 可视化建站
  • 拖拽编辑
  • 主题定制
  • SEO 优化
  • 网站托管

联系方式

  • 📍 地址:北京市朝阳区建国路 88 号
  • 📞 电话:400-888-8888
  • ✉️ 邮箱:info@hmyw.cn
  • 🕐 时间:周一至周日 9:00-18:00

© 2024 恒美微站 hmyw.cn 版权所有 | 京 ICP 备 12345678 号