当前位置: 首页 > news >正文

基于BindingList的WinForm数据绑定机制与DataGridView动态刷新技术

前言:

本文以连接SQLite为例进行代码演示

一、首先建立里一个模型类

   public class MyData{public int id { get; set; }public string name { get; set; }public int age { get; set; }public string sex { get; set; }public string address { get; set; }}

二、封装一个连接SQLite方法,并返回BindingList集合用于DataGridView使用

 private static readonly object _lock = new object();//确保线程安全public static BindingList<MyData> GetData(string sql, int offset, int limit){lock (_lock){// 创建一个BindingList来保存查询结果  BindingList<MyData> dataList = new BindingList<MyData>();// 使用SQLiteConnection打开数据库连接  using (SQLiteConnection connection = new SQLiteConnection(connectionString)){connection.Open();using (SQLiteCommand command = new SQLiteCommand(sql, connection)){// 添加分页的查询语句command.CommandText = sql + " LIMIT @limit OFFSET @offset";command.Parameters.AddWithValue("@limit", limit);command.Parameters.AddWithValue("@offset", offset);using (SQLiteDataReader reader = command.ExecuteReader()){while (reader.Read()){// 读取数据库中的每一行数据,并将其添加到BindingListMyData data = new MyData{id = reader.GetInt32(0),name = reader.IsDBNull(1) ? "N/A" : reader.GetString(1),age = reader.IsDBNull(2) ? 0 : reader.GetInt32(2),sex = reader.IsDBNull(3) ? "N/A" : reader.GetString(3),address = reader.IsDBNull(4) ? "N/A" : reader.GetString(4)};dataList.Add(data);}}}}return dataList;}}

三、数据展示(查、改,删、增)

  public static void BindDataGridView(DataGridView dataGridView){// 计算偏移量,偏移量 = (当前页 - 1) * 每页条数int offset = (currentPage - 1) * pageSize;// SQL查询语句string sql = "SELECT * FROM ceshi Where Status!='-1'";// 获取数据并绑定到DataGridViewBindingList<MyData> dataList = GetData(sql, offset, pageSize);}
 public static void SQLUPDATE(MyData data, string sql, DataGridView dataGridView){var bindingList = dataGridView.DataSource as BindingList<MyData>;if (bindingList != null){// 找到要修改的项var dataToEdit = bindingList.FirstOrDefault(d => d.id == data.id);if (dataToEdit != null){// 更新BindingList中的数据dataToEdit.name = data.name;dataToEdit.age = data.age;dataToEdit.sex = data.sex;dataToEdit.address = data.address;using (SQLiteConnection connection = new SQLiteConnection(connectionString)){connection.Open();// 创建SQLite命令对象using (SQLiteCommand command = new SQLiteCommand(sql, connection)){// 执行更新操作command.ExecuteNonQuery();}}dataGridView.Refresh();}}}
 public static void SQLDelete(int id, DataGridView dataGridView){var bindingList = dataGridView.DataSource as BindingList<MyData>;if (bindingList != null){var itemToDelete = bindingList.FirstOrDefault(d => d.id == id);if (itemToDelete != null){bindingList.Remove(itemToDelete); // 从BindingList中移除using (SQLiteConnection connection = new SQLiteConnection(connectionString)){connection.Open();// 删除SQL语句string sql = "UPDATE ceshi set Status='-1'  WHERE id = @id";// 创建SQLite命令对象using (SQLiteCommand command = new SQLiteCommand(sql, connection)){// 添加参数command.Parameters.AddWithValue("@id", id);// 执行删除操作command.ExecuteNonQuery();}}BindDataGridView(dataGridView);}}}
 public static void SQLAdd(MyData data, string sql, DataGridView dataGridView){// 将新数据项添加到BindingList中var bindingList = dataGridView.DataSource as BindingList<MyData>;if (bindingList != null){bindingList.Add(data); // 添加新数据}using (SQLiteConnection connection = new SQLiteConnection(connectionString)){connection.Open();// 创建SQLite命令对象using (SQLiteCommand command = new SQLiteCommand(sql, connection)){// 执行插入操作command.ExecuteNonQuery();// 获取插入数据的自增IDlong newId = connection.LastInsertRowId;data.id = (int)newId; // 返回自增的ID}BindDataGridView(dataGridView);}}

四、上下页切换

我的最新作品,快来一睹为快!

相关文章:

基于BindingList的WinForm数据绑定机制与DataGridView动态刷新技术

前言&#xff1a; 本文以连接SQLite为例进行代码演示 一、首先建立里一个模型类 public class MyData{public int id { get; set; }public string name { get; set; }public int age { get; set; }public string sex { get; set; }public string address { get; set; }} 二、…...

大数据新视界 -- Hive 数据分区:精细化管理的艺术与实践(上)(7/ 30)

&#x1f496;&#x1f496;&#x1f496;亲爱的朋友们&#xff0c;热烈欢迎你们来到 青云交的博客&#xff01;能与你们在此邂逅&#xff0c;我满心欢喜&#xff0c;深感无比荣幸。在这个瞬息万变的时代&#xff0c;我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而 我的…...

对于相对速度的重新理解 - 插一句

因为发了太多的公式&#xff0c;系统提示插入图片太频繁&#xff0c;下一个部分稍后再写。 这里要强调一下&#xff1a; 狭义相对论的平方和形式&#xff0c;其实就是因为分不清虚数单位的大小才写成这个样子。或者用物理语言来说&#xff0c;就是认为所有惯性系的“光速”都…...

css基础(27)_行内、行内块元素之间的空白问题

行内、行内块元素之间的空白问题 产生的原因&#xff1a;行内元素、行内块元素&#xff0c;彼此之间的换行会被浏览器解析为一个空白字符。 案例一&#xff1a; <!DOCTYPE html> <html lang"zh"> <head><meta charset"UTF-8">&…...

如果接口返回值图片有很长一串码,需要添加前缀

需要在前面添加前缀&#xff1a;data:image/jpeg;base64,然后将值赋值给<img :src"originalImage" /> this.tableLists.map((item)>{item.originalImage "data:image/jpeg;base64,"item.originalImage})以上方法会导致出现一个小bug&#xff0c;…...

《AI大模型开发笔记》——ollama应用全面解析

入门篇 1 ollama是什么? Ollama 是一个支持在本地运行大语言模型的工具,兼容 Windows、Linux 和 MacOS 操作系统。使用 Ollama,您仅需一行命令即可启动模型。 2 如何安装? Windows和MacOS用户,从下面链接下载安装即可: 下载地址:https://ollama.com/download Linux系…...

Paddle Inference部署推理(三)

三&#xff1a;Paddle Inference推理 导出模型 Paddle Inference支持使用飞桨静态图模型进行推理&#xff0c;您可以通过以下两种方式获取静态图模型&#xff1a; &#xff08;1&#xff09;飞桨框架导出推理模型 飞桨框架在训练模型过程中&#xff0c;会在本地存储最终训练…...

CSP/信奥赛C++语法基础刷题训练(23):洛谷P1217:[USACO1.5] 回文质数 Prime Palindromes

CSP/信奥赛C语法基础刷题训练&#xff08;23&#xff09;&#xff1a;洛谷P1217&#xff1a;[USACO1.5] 回文质数 Prime Palindromes 题目描述 因为 151 151 151 既是一个质数又是一个回文数&#xff08;从左到右和从右到左是看一样的&#xff09;&#xff0c;所以 151 151 …...

《跨越语言壁垒:Python 人工智能原型到 C++可执行程序的转型之路》

在人工智能的广阔天地里&#xff0c;Python 以其简洁易用和丰富的库资源成为众多开发者快速搭建人工智能原型的首选语言。然而&#xff0c;在一些对性能和资源控制要求极高的场景下&#xff0c;C则展现出无可比拟的优势。那么&#xff0c;如何将 Python 中开发的人工智能原型代…...

flowable流程图详细绘制教程

文章目录 前言一、flowable是什么&#xff1f;回答下之前的问题 二、flowable-modeler使用1. 使用步骤2.开始绘制弄一个请假的流程 三 加载该流程总结 前言 flowable有些晦涩难懂的东西&#xff1a; 我最开始接触的时候,还是用的activity,当时觉得好复杂,那么这次经过我自己在…...

Figma入门-基本操作制作登录页

Figma入门-基本操作制作登录页 前言 在之前的工作中&#xff0c;大家的原型图都是使用 Axure 制作的&#xff0c;印象中 Figma 一直是个专业设计软件。 最近&#xff0c;很多产品朋友告诉我&#xff0c;很多原型图都开始用Figma制作了&#xff0c;并且很多组件都是内置的&am…...

在windows操作系统上,用git与github账户连接

一、环境准备 1.1 git软件 1.2 github账号 1.3 创建一个项目目录&#xff0c;比如 D:\project\gitproject 二、开始操作 1. 进入项目目录下&#xff0c;右键&#xff0c;如图&#xff0c;打开git bash命令行 2. 在命令行输入以下三个命令 $ git config --global user.name &quo…...

springboot系列--拦截器执行原理

一、拦截器核心概念 一、定义 拦截器&#xff08;Interceptor&#xff09;是框架级别的组件&#xff0c;用于在请求的不同阶段&#xff08;如到达控制器之前&#xff08;也就是接口&#xff09;、处理完成之后&#xff09;动态地拦截和处理 HTTP 请求。 二、使用场景 一、用户…...

数据可视化复习2-绘制折线图+条形图(叠加条形图,并列条形图,水平条形图)+ 饼状图 + 直方图

目录 目录 一、绘制折线图 1.使用pyplot 2.使用numpy ​编辑 3.使用DataFrame ​编辑 二、绘制条形图&#xff08;柱状图&#xff09; 1.简单条形图 2.绘制叠加条形图 3.绘制并列条形图 4.水平条形图 ​编辑 三、绘制饼状图 四、绘制散点图和直方图 1.散点图 2…...

STM32F10x 定时器

使用定时器实现&#xff1a;B5 E5的开关 添加相关的.h路径文件 添加相关的.c配置文件 led.h文件 用于声明LED函数 #ifndef __LED_H //没有定义__LED_H #define __LED_H //就定义__LED_H #define LED1_ON GPIO_ResetBits(GPIOB,GPIO_Pin_5) #defi…...

VBA技术资料MF230:展开所有折叠视图并恢复

我给VBA的定义&#xff1a;VBA是个人小型自动化处理的有效工具。利用好了&#xff0c;可以大大提高自己的工作效率&#xff0c;而且可以提高数据的准确度。“VBA语言専攻”提供的教程一共九套&#xff0c;分为初级、中级、高级三大部分&#xff0c;教程是对VBA的系统讲解&#…...

【数据结构OJ】【图论】图综合练习--拓扑排序

题目描述 已知有向图&#xff0c;顶点从0开始编号&#xff0c;求它的求拓扑有序序列。 拓扑排序算法&#xff1a;给出有向图邻接矩阵 1.逐列扫描矩阵&#xff0c;找出入度为0且编号最小的顶点v 2.输出v&#xff0c;并标识v已访问 3.把矩阵第v行全清0 重复上述步骤&#xff0…...

网络安全防范

网络安全防范技术 所属课程网络攻防实践作业要求第六次作业 实践内容 学习总结 PDR&#xff0c;$$P^2$$DR安全模型。 防火墙&#xff08;Firewall&#xff09;&#xff1a; 网络访问控制机制&#xff0c;布置在网际间通信的唯一通道上。 不足&#xff1a;无法防护内部威胁&…...

Linux nc 命令详解

简介 nc 全称 netcat&#xff0c;是一个在 Linux 中多功能的网络工具&#xff0c;通常用于通过 TCP 或 UDP 读取和写入网络连接&#xff0c;也能作为客户端或服务端用来 debug&#xff0c;测试&#xff0c;网络问题分析。 常用示例 检查端口是否是打开的 nc -zv <hostna…...

解决 Gradle 报错:`Plugin with id ‘maven‘ not found` 在 SDK 开发中的问题

在 SDK 开发过程中&#xff0c;使用 Gradle 构建和发布 SDK 是常见的任务。在将 SDK 发布为 AAR 或 JAR 包时&#xff0c;你可能会使用 apply plugin: maven 来发布到本地或远程的 Maven 仓库。但是&#xff0c;随着 Gradle 版本的更新&#xff0c;特别是从 Gradle 7 版本开始&…...

stm32cubemx+VSCODE+GCC+makefile 开发环境搭建

title: stm32cubemxVSCODEGCCmakefile 开发环境搭建 tags: FreertosHalstm32cubeMx 文章目录 内容往期内容导航第一步准备环境vscode 插件插件配置点灯 内容 往期内容导航 第一步准备环境 STM32CubeMXVSCODEMinGWOpenOcdarm-none-eabi-gcc 然后把上面下载的软件 3 4 5 bin 文…...

postgresql|数据库开发|python的psycopg2库按指定顺序批量执行SQL文件(可离线化部署)

一、 psycopg2简介 psycopg2库是python的一个可直接操作postgresql数据库的类库&#xff0c;是一个用于Python编程语言的PostgreSQL数据库适配器。它允许开发人员使用Python语言与PostgreSQL数据库进行交互和操作&#xff0c;不同于java&#xff0c;需要专用的一个驱动&#…...

学习ASP.NET Core的身份认证(基于Cookie的身份认证3)

用户通过验证后调用HttpContext.SignInAsync函数将用户的身份信息保存在认证Cookie中,以便后续的请求可以验证用户的身份,该函数原型如下所示&#xff0c;其中properties参数的主要属性已在前篇文章中学习&#xff0c;本文学习scheme和principal的意义及用法。 public static …...

Java 中的 HashMap 原理详解:底层结构与实现机制

HashMap 是 Java 中最常用的数据结构之一&#xff0c;它以其高效的存取速度在众多应用场景中被广泛使用。理解 HashMap 的底层实现原理&#xff0c;对提升开发效率、优化性能以及编写高效的代码都至关重要。本文将深入探讨 HashMap 的数据结构、存储机制、解决冲突的策略、扩容…...

数据库MYSQL——表的设计

文章目录 前言三大范式&#xff1a;几种实体间的关系&#xff1a;一对一关系&#xff1a;一对多关系&#xff1a;多对多关系&#xff1a; 前言 之前的博客中我们讲解的是关于数据库的增删改查与约束的基本操作&#xff0c; 是在已经创建数据库&#xff0c;表之上的操作。 在实…...

CUDA补充笔记

文章目录 一、不同核函数前缀二、指定kernel要执行的线程数量三、线程需要两个内置坐标变量来唯一标识线程四、不是blocksize越大越好&#xff0c;上限一般是1024个blocksize 一、不同核函数前缀 二、指定kernel要执行的线程数量 总共需要线程数是&#xff1a; 1 * N N个线程…...

OSI七层模型和TCP/IP五层模型详细介绍

这里写目录标题 一.OSI含义二.OSI七层模型1.应用层2.表示层3.会话层4.传输层5.网络层6.数据链路层7.物理层 TCP/IP五层协议1.应用层2.运输层运行在TCP上的协议运行在UDP上的协议 3.网络层IP协议配套使用的协议 4.数据链路层 四.网络协议分层的好处 一.OSI含义 OSI即是开放式通…...

mac安装Pytest、Allure、brew

安装环境 安装pytest 命令 pip3 install pytest 安装allure 命令&#xff1a;brew install allure 好吧 那我们在安装allure之前 我们先安装brew 安装brew 去了官网复制了命令 还是无法下载 如果你们也和我一样可以用这个方法哦 使用国内的代码仓库来执行brew的安装脚本…...

Linux/Windows/OSX 上面应用程序重新启动运行。

1、Linux/OSX 上面重新运行程序&#xff0c;直接使用 execvp 函数就可以了&#xff0c;把main 函数传递来的 argv 二维数组&#xff08;命令行参数&#xff09;传进去就可以&#xff0c;注意不要在 fork 出来的子进程搞。 2、Windows 平台可以通过 CreateProcess 函数来创建新的…...

自定义 Kafka 脚本 kf-use.sh 的解析与功能与应用示例

Kafka&#xff1a;分布式消息系统的核心原理与安装部署-CSDN博客 自定义 Kafka 脚本 kf-use.sh 的解析与功能与应用示例-CSDN博客 Kafka 生产者全面解析&#xff1a;从基础原理到高级实践-CSDN博客 Kafka 生产者优化与数据处理经验-CSDN博客 Kafka 工作流程解析&#xff1a…...

Odoo :免费且开源的农牧行业ERP管理系统

文 / 开源智造Odoo亚太金牌服务 引言 提供农牧企业数字化、智能化、无人化产品服务及全产业链高度协同的一体化解决方案&#xff0c;提升企业智慧种养、成本领先、产业互联的核心竞争力。 行业典型痛点 一、成本管理粗放&#xff0c;效率低、管控弱 产品研发过程缺少体系化…...

AI的自我陷阱:大型神经网络训练中的模型崩溃现象

10月7日&#xff0c;发布在arxiv上的一篇名为Strong Model Collapse的论文&#xff0c;由Meta 、纽约大学和加州大学洛杉矶分校的研究人员共同发表的研究表明在训练大型神经网络&#xff08;如 ChatGPT 和 Llama&#xff09;时&#xff0c;由于训练语料库中包含合成数据而导致的…...

Python(下载安装)

简介 开发工具&#xff1a;pycharm, VS Code 1. 下载&#xff08;解释器程序&#xff09; Download Python | Python.org 2. 安装&#xff08;解释器程序&#xff09; 双击下载后的exe文件 查看版本&#xff1a;python&#xff08;并可以执行python代码&#xff09; 3. 下载…...

记录一种在内核空间向用户空间通知中断的方法

记录一种在内核空间向用户空间通知中断的方法 0.前言1.代码实现1)内核设备驱动实现2)消息通知实现3)测试程序 2.解析 参考文章&#xff1a;Linux驱动实践&#xff1a;中断处理函数如何【发送信号】给应用层&#xff1f; 0.前言 最近在项目中遇到一个需求&#xff0c;需要将一个…...

Apache Maven 标准文件目录布局

Apache Maven 采用了一套标准的目录布局来组织项目文件。这种布局提供了一种结构化和一致的方式来管理项目资源&#xff0c;使得开发者更容易导航和维护项目。理解和使用标准目录布局对于有效的Maven项目管理至关重要。本文将探讨Maven标准目录布局的关键组成部分&#xff0c;并…...

【vim】使用 gn 组合命令实现搜索选中功能

gn是Vim 7.4新增的一个操作&#xff08;motion&#xff09;&#xff0c;作用是跳到并选中下一个搜索匹配项。 具体说&#xff0c;Vim里执行搜索后&#xff0c;执行n操作只会跳转到下一个匹配项&#xff0c;而不选中它。但是我们往往需要对匹配项执行一些修改操作&#xff0c;例…...

解决登录Google账号遇到手机上Google账号无法验证的问题

文章目录 场景小插曲解决方案总结 场景 Google账号在新的设备上登录的时候&#xff0c;会要求在手机的Google上进行确认验证&#xff0c;而如果没有安装Google play就可能出现像我一样没有任何弹框&#xff0c;无法实现验证 小插曲 去年&#xff0c;我在笔记本上登录了Googl…...

基于YOLOv10深度学习的公共安全持刀行为检测系统研究与实现(PyQt5界面+数据集+训练代码)

随着社会的不断进步和城市化进程的加快&#xff0c;人口密度的增加和社会结构的复杂化使得公共安全问题日益凸显。近年来&#xff0c;各类公共安全事件频发&#xff0c;其中持刀行为作为一种典型的暴力行为&#xff0c;已成为威胁公共安全的严重因素之一。这种行为在公共场所发…...

HP6心率血压传感器

目录 一、介绍 1、工作原理概述 2、具体实现步骤 二、HP6的通信及配置 1、通信接口 2、器件地址/命令 3、校验 三、程序设计 ①IIC通信相关基础函数 ②HP6相关基础函数 一、介绍 HP6心率血压传感器的原理主要基于光电容积脉搏波描记法&#xff08;PPG&#xff09;&…...

深入理解 JVM 中的 G1 垃圾收集器原理、算法、过程和参数配置

引言 Java 虚拟机&#xff08;JVM&#xff09;中的垃圾收集器&#xff08;Garbage Collector&#xff0c;简称 GC&#xff09;是自动内存管理的核心部分。G1&#xff08;Garbage-First&#xff09;垃圾收集器是 Oracle 在 JDK 7u4 版本中引入的一种新型垃圾收集器&#xff0c;…...

细说敏捷:敏捷四会之standup meeting

上一篇文章中&#xff0c;我们讨论了 敏捷四会 中 冲刺计划会 的实施要点&#xff0c;本篇我们继续分享敏捷四会中实施最频繁&#xff0c;团队最容易实施但往往也最容易走形的第二个会议&#xff1a;每日站会 关于每日站会的误区 站会是一个比较有标志性的仪式活动&#xff0…...

MySQL系列之身份鉴别(安全)

导览 前言Q&#xff1a;如何保障MySQL数据库身份鉴别的有效性一、有效性检查1. 用户唯一2. 启用密码验证3. 是否存在空口令用户4. 是否启用口令复杂度校验5. 是否设置口令的有效期6. 是否限制登录失败尝试次数7. 是否设置&#xff08;超过尝试次数&#xff09;锁定的最小时长8.…...

vue3封装Element Plus table表格组件

支持绝大部分Element Plus原有设置属性&#xff0c;支持分页&#xff0c;支持动态适配高度 效果展示 组件代码&#xff1a; <template><div class"table-wrap" ref"tableWrap"><el-tableclass"w100 h100":data"tableInfo.…...

SFP+光模块介绍

SFP光模块介绍 1 SFP光模块简介(Small Form -Factor Pluggable)2 光模块管脚定义 1 SFP光模块简介(Small Form -Factor Pluggable) 光模块&#xff08;Optical Module&#xff09;由光电子器件、功能电路和光接口等组成&#xff0c;光电子器件包括激光发射器(Laser Transmitte…...

神经网络的初始化

目录 为什么需要初始化&#xff1f; 初始化的常用方法&#xff1a; 是否必须初始化&#xff1f; 初始化神经网络中的权重和偏置是深度学习模型训练中非常重要的一步&#xff0c;虽然在某些情况下不进行初始化也能训练出模型&#xff0c;但正确的初始化方法能够显著提高训练效…...

数据集搜集器0.01

我们使用Python的Tkinter库来创建GUI界面&#xff0c;并使用requests库来从360百科获取数据。下面是一个完整的示例代码&#xff0c;它包括了一个简单的GUI界面&#xff0c;用户可以输入问题&#xff0c;点击按钮后会从360百科获取相关信息&#xff0c;并显示在同一个Text组件中…...

【Lucene】搜索引擎和文档相关性评分 BM25 算法的工作原理

BM25 算法的工作原理&#xff1a; 什么是 BM25 算法&#xff1f; BM25 是一种流行的文本检索算法&#xff0c;广泛用于搜索引擎和文档相关性评分。它基于概率检索模型&#xff0c;旨在评估查询和文档之间的相关性。 核心公式 BM25 的公式如下&#xff1a; score ( D , Q ) …...

嵌入式Linux——文件类型

目录 普通文件 目录文件 目录文件的权限与管理 字符设备文件和块设备文件 符号链接文件 查看符号链接 删除符号链接 修改符号链接 管道文件 匿名管道&#xff08;Anonymous Pipe&#xff09; 匿名管道的特点&#xff1a; 使用示例&#xff1a; 命名管道&#xff08…...

ES6 模块化语法

目录 ES6 模块化语法 分别暴露 统一暴露 ​编辑 默认暴露 ES6 模块化引入方式 ES6 模块化语法 模块功能主要由两个命令构成&#xff1a;export 和 import。 ⚫ export 命令用于规定模块的对外接口&#xff08;哪些数据需要暴露&#xff0c;就在数据前面加上关键字即可…...

Gradio学习笔记记录

安装指令&#xff1a;pip install gradio方法介绍 Interface》用于构建一些简单的页面&#xff0c;可以直接用这个指令搞定 形式》接收三个参数分别为处理函数、输入、输出三部分&#xff0c;呈现一般左/上为输入&#xff0c;右或下为输出 fn&#xff1a;将用户界面 &#xff0…...