c# winform对数据库进行增删改查操作

2023-11-18

开发工具:sqlserver2012,visoual code 2017

打开sqlserver2012 ,创建一个表,表结构如下

 然后打开VS2017,文件-新建-项目-Windows窗体应用 这里我就在工具箱拉取了三个button和一个显示数据的dataGirdView控件

还有一个点击新增的跳转页面,有点丑不要介意哈

 

 这里开始正式代码了:

先右击添加一个类,DataBase.cs 获取数据库的连接 

 //数据库连接
        public SqlConnection getConn()
        {
            String strConnection = "server=192.168.1.192;database=test1;uid=sa;pwd=1120061929";
            SqlConnection conn = new SqlConnection(strConnection);
            return conn;
        }

双击Form1.cs里的 四个按钮(增删查改) 生成四个点击事件

这里我就直接把增删查改的代码写上去了

    //查询
        private void button1_Click(object sender, EventArgs e)
        {
            //获取数据库连接
            DataBase db = new DataBase();
            SqlConnection conn=db.getConn();
            //打开连接
            conn.Open();
           //定义sql语句
            String sql = "select * from test1";
            //创建sql执行对象
            SqlCommand comm = new SqlCommand(sql, conn);
            //创建数据适配器
            SqlDataAdapter sda = new SqlDataAdapter();
            //执行sql语句
            sda.SelectCommand = comm;
            //创建数据集
            DataSet ds = new DataSet();
            //将对应test表数据保存到数据集合中
            sda.Fill(ds, "test1");
            //把数据集合中第一个表的数据填充到dataGirdView中
            dataGridView1.DataSource = ds.Tables[0];
            //关闭连接
            conn.Close();
         
        }
        //新增
        private void button2_Click(object sender, EventArgs e)
        {
            add ad = new add();
            ad.ShowDialog();
        }
        //修改
        private void button3_Click(object sender, EventArgs e)
        {
            DataBase db = new DataBase();
            SqlConnection conn = db.getConn();
            conn.Open();
            int rowindex = dataGridView1.CurrentRow.Index;
            String value0 = dataGridView1.Rows[rowindex].Cells[0].Value.ToString();
            String value1 = dataGridView1.Rows[rowindex].Cells[1].Value.ToString();
            String value2 = dataGridView1.Rows[rowindex].Cells[2].Value.ToString();
            String sql = "update test1 set name='" + value1 + "',age='" + value2 + "' where id='" + value0 + "'";
            SqlCommand comm = new SqlCommand(sql, conn);
            comm.ExecuteNonQuery();
            MessageBox.Show("保存成功!");
            conn.Close();
        }
        //删除
        private void button4_Click(object sender, EventArgs e)
        {
            DataBase db = new DataBase();
            SqlConnection conn = db.getConn();
            conn.Open();
            int rowindex = dataGridView1.CurrentRow.Index;
            String value0 = dataGridView1.Rows[rowindex].Cells[0].Value.ToString();
            String sql="delete from test1 where id='"+value0+"'";
            SqlCommand comm = new SqlCommand(sql, conn);
            comm.ExecuteNonQuery();
            MessageBox.Show("删除成功!");
            conn.Close();
        }

效果图如下

 

这里点新增的时候 跳转页面是直接new 新窗体类名调用他的showdialog()方法就行,这里就不介绍了 直接附上代码和效果图

  //新增
        private void button2_Click(object sender, EventArgs e)
        {
            add ad = new add();
            ad.ShowDialog();
        }
 private void button1_Click(object sender, EventArgs e)
        {
            DataBase db = new DataBase();
            SqlConnection conn = db.getConn();
            conn.Open();
            String sql="insert into test1 values('"+textBox1.Text+"','"+textBox2.Text+"')";
            SqlCommand comm = new SqlCommand(sql, conn);
            comm.ExecuteNonQuery();
            MessageBox.Show("保存成功!");
            conn.Close();
        }

效果图

 

这是小弟的第一篇博客,也是转学c#的一个入门小demo,大佬们多多指教!谢谢!勿喷。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

c# winform对数据库进行增删改查操作 的相关文章

  • 将复选框添加到 UniformGrid

    我正在尝试将复选框动态添加到 wpf 中的统一网格中 但看起来网格没有为它们分配足够的空间 所以它们都有点互相重叠 这就是我将它们添加到后面的代码中的方法 foreach string folder in subfolders PathCh
  • 检查两个数是否是彼此的排列?

    给定两个数字 a b 使得 1 例如 123 是 312 的有效排列 我也不想对数字中的数字进行排序 如果您指的是数字的字符 例如 1927 和 9721 则 至少 有几种方法 如果允许排序 一种方法是简单地sprintf将它们放入两个缓冲
  • 访问私人成员[关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 通过将类的私有成员转换为 void 指针 然后转换为结构来访问类的私有成员是否合适 我认为我无权修改包含我需要访问的数据成员的类 如果不道德 我
  • pthread_cond_timedwait() 和 pthread_cond_broadcast() 解释

    因此 我在堆栈溢出和其他资源上进行了大量搜索 但我无法理解有关上述函数的一些内容 具体来说 1 当pthread cond timedwait 因为定时器值用完而返回时 它如何自动重新获取互斥锁 互斥锁可能被锁定在其他地方 例如 在生产者
  • linux perf:如何解释和查找热点

    我尝试了linux perf https perf wiki kernel org index php Main Page今天很实用 但在解释其结果时遇到了困难 我习惯了 valgrind 的 callgrind 这当然是与基于采样的 pe
  • 将布尔参数传递给 SQL Server 存储过程

    我早些时候问过这个问题 我以为我找到了问题所在 但我没有 我在将布尔参数传递给存储过程时遇到问题 这是我的 C 代码 public bool upload false protected void showDate object sende
  • WPF 中的调度程序和异步等待

    我正在尝试学习 WPF C 中的异步编程 但我陷入了异步编程和使用调度程序的困境 它们是不同的还是在相同的场景中使用 我愿意简短地回答这个问题 以免含糊不清 因为我知道我混淆了 WPF 中的概念和函数 但还不足以在功能上正确使用它 我在这里
  • 为什么#pragma optimize("", off)

    我正在审查一个 C MFC 项目 在某些文件的开头有这样一行 pragma optimize off 我知道这会关闭所有以下功能的优化 但这样做的动机通常是什么 我专门使用它来在一组特定代码中获得更好的调试信息 并在优化的情况下编译应用程序
  • 如何将图像和 POST 数据上传到 Azure 移动服务 ApiController 终结点?

    我正在尝试上传图片and POST表单数据 尽管理想情况下我希望它是json 到我的端点Azure 移动服务应用 我有ApiController method HttpPost Route api upload databaseId sea
  • Cython 和类的构造函数

    我对 Cython 使用默认构造函数有疑问 我的 C 类 Node 如下 Node h class Node public Node std cerr lt lt calling no arg constructor lt lt std e
  • Web API - 访问 DbContext 类中的 HttpContext

    在我的 C Web API 应用程序中 我添加了CreatedDate and CreatedBy所有表中的列 现在 每当在任何表中添加新记录时 我想填充这些列 为此目的我已经覆盖SaveChanges and SaveChangesAsy
  • 从路径中获取文件夹名称

    我有一些路c server folderName1 another name something another folder 我如何从那里提取最后一个文件夹名称 我尝试了几件事 但没有成功 我只是不想寻找最后的 然后就去休息了 Thank
  • Github Action 在运行可执行文件时卡住

    我正在尝试设置运行google tests on a C repository using Github Actions正在运行的Windows Latest 构建过程完成 但是当运行测试时 它被卡住并且不执行从生成的可执行文件Visual
  • 如何衡量两个字符串之间的相似度? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 给定两个字符串text1 and text2 public SOMEUSABLERETURNTYPE Compare string t
  • C++ 复制初始化和直接初始化,奇怪的情况

    在继续阅读本文之前 请阅读在 C 中 复制初始化和直接初始化之间有区别吗 https stackoverflow com questions 1051379 is there a difference in c between copy i
  • C++ fmt 库,仅使用格式说明符格式化单个参数

    使用 C fmt 库 并给定一个裸格式说明符 有没有办法使用它来格式化单个参数 example std string str magic format 2f 1 23 current method template
  • WCF:将随机数添加到 UsernameToken

    我正在尝试连接到用 Java 编写的 Web 服务 但有些东西我无法弄清楚 使用 WCF 和 customBinding 几乎一切似乎都很好 除了 SOAP 消息的一部分 因为它缺少 Nonce 和 Created 部分节点 显然我错过了一
  • 32 位到 64 位内联汇编移植

    我有一段 C 代码 在 GNU Linux 环境下用 g 编译 它加载一个函数指针 它如何执行并不重要 使用一些内联汇编将一些参数推送到堆栈上 然后调用该函数 代码如下 unsigned long stack 1 23 33 43 save
  • 为什么 C# Math.Ceiling 向下舍入?

    我今天过得很艰难 但有些事情不太对劲 在我的 C 代码中 我有这样的内容 Math Ceiling decimal this TotalRecordCount this PageSize Where int TotalRecordCount
  • 为什么我收到“找不到编译动态表达式所需的一种或多种类型。”?

    我有一个已更新的项目 NET 3 5 MVC v2 到 NET 4 0 MVC v3 当我尝试使用或设置时编译出现错误 ViewBag Title财产 找不到编译动态表达式所需的一种或多种类型 您是否缺少对 Microsoft CSharp

随机推荐

  • Spring Boot 统一返回前端封装VO类型结果集定义

    现在大部分项目都是前后端分离的项目 为了统一管理 后端需要对数据进行封装对应的VO数据 什么是Vo我就不叙述了 这里贴出我自己的VO封装类 项目的故障码并没有定义太多 所以也没有定义枚举类型 供大家参考 import io swagger
  • Unity查看接入的Ironsource和adapter 版本号

    APPLOVINADAPTER版本号
  • vmware 开机自动启动虚拟机

    vmware开机自动启动 可以使用vmrun命令 1 首先在 我的电脑 属性 高级 环境变量 PATH 中添加vmware路径 如 C Program Files x86 VMware VMware Workstation 2 新建一个 启
  • Kafka一文懂

    初识 Kafka 什么是 Kafka Kafka 是由 Linkedin 公司开发的 它是一个分布式的 支持多分区 多副本 基于 Zookeeper 的分布式消息流平台 它同时也是一款开源的基于发布订阅模式的消息引擎系统 Kafka 的基本
  • 影响DDR5稳定性的RAS功能

    内存的稳定性 离不开RAS功能 这里的RAS Reliability Availability and Serviceability 即可靠性 可用性和可维护性的简称 RAS功能一方面可以通过调整信号规避风险 另一方面 在发生错误时及时发现
  • js常用正则表达式 匹配多个汉字、数字、英文、所有字符(附带Layui中form的表单验证)

    常用正则表达式 转自 菜鸟工具 https c runoob com front end 854 一 校验数字的表达式 数字 0 9 n位的数字 d n 至少n位的数字 d n m n位的数字 d m n 零和非零开头的数字 0 1 9 0
  • 系统部署的基本流程

    系统部署的基本流程 系统升级部署的步骤 系统升级部署的步骤 一 web后台 1 确保代码正确 配置正确 打包为war 2 登录现有web端查看部分数据正常 数据库部分表时间段数据正常 3 连接服务器 进入相应tomcat 停止tomcat
  • Vite简介

    Vite是一个快速 轻量级的前端构建工具 它可以让开发者更高效地进行前端开发 相比于其他构建工具 Vite的特点在于快速的冷启动 模块热替换和按需编译等功能 下面我们将详细探讨Vite的优势和如何使用它 什么是Vite Vite是一款基于R
  • python进阶(七):并发和多线程

    一 多线程 原文 大纲 首页 并发是一种同时执行多个任务的方式 而多线程是一种实现并发的技术 在Python中 可以使用多线程来实现并发编程 了解Python的并发和多线程对于编写高效和响应性的程序非常重要 并发 vs 并行 在讨论并发和多
  • 支持本地挂载的网盘文件列表工具AList

    什么是 Alist AList 是一个支持多存储的文件列表程序 使用 Gin 框架和 Solidjs 库 可以将常见的 18 种网盘整合在一起 并支持 WebDAV 客户端访问 之前老苏写过一篇 Alist 但此 Alist 非彼 Alis
  • Hyperledger2.0 链码安装

    文章目录 简介 package install approveformyorg commit 半自动化安装链码 简介 以Hyperldger2 0为例 链码的安装主要分为以下几部分 package 打包源代码 install 安装链码 ap
  • Embedded world conference 2015

    本文转载至 http www embedded world eu program html 一些相关的议程 Tuesday February 24 13 30 14 30 Keynote 1 Conference Keynote 09 30
  • k3服务器端的虚拟,k3服务器 客户端配置

    k3服务器 客户端配置 内容精选 换一换 选择Windows开发环境下 安装Eclipse 安装JDK 请安装JDK1 8及以上版本 Eclipse使用支持JDK1 8及以上的版本 并安装JUnit插件 若使用IBM JDK 请确保Ecli
  • 想搞清是服务器否存在内存泄漏或jvm其他方面的问题

    解决问题 想搞清是服务器否存在内存泄漏或jvm其他方面的问题 heap dump heap dump文件是一个二进制文件 它保存了某一时刻JVM堆中对象使用情况 HeapDump文件是指定时刻的Java堆栈的快照 是一种镜像文件 Heap
  • 深度学习总结(一)

    深度学习总结 一 1 经典优化算法 1 一阶迭代法 又称梯度下降法 2 二阶迭代法 牛顿法 一般在神经网络里面 L 函数就是代价函数 2 不同梯度下降法 1 经典梯度下降法 2 随机梯度下降法 随机梯度下降法可以解决经典梯度下降法数据量大
  • 代码随想录算法训练营第一天

    704 二分查找 题目链接 力扣 二分法写代码时一般是写左闭右闭和左闭右开两种类型 左闭右闭 left right 左闭右开 left right 指右边不包含right这个值 int right size 两大问题 while left
  • 全新的刷脸支付开辟一条全新发展之路

    数字化和刷脸支付的强强联合给众多商家带去希望和惊喜 崭新的2021年 这个惊喜仍然在继续 数字化经营刷脸支付 如何为创业者带去商机 2020年 是刷脸支付发展的黄金时期 它曾因为疫情跌落到谷底 却也因为疫情再次飞上云端 重拾自信 在行业巨头
  • form 校验多个表单

    有的时候 表单需要拆开多个 这时候就需要校验多个表单
  • Qt 学习之路:线程和 QObject

    前面两个章节我们从事件循环和线程类库两个角度阐述有关线程的问题 本章我们将深入线程间得交互 探讨线程和QObject之间的关系 在某种程度上 这才是多线程编程真正需要注意的问题 现在我们已经讨论过事件循环 我们说 每一个 Qt 应用程序至少
  • c# winform对数据库进行增删改查操作

    开发工具 sqlserver2012 visoual code 2017 打开sqlserver2012 创建一个表 表结构如下 然后打开VS2017 文件 新建 项目 Windows窗体应用 这里我就在工具箱拉取了三个button和一个显