这种方法主要是双击datagridview单元格,直接进行添加,修改,删除,在实际开发中并不太常用,另一种方法下一次在具体陈述。

 using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data;
using System.Data.SqlClient;

引用

  1. namespace SQlCommandBuilter
  2. {
  3. public partial class Form1 : Form
  4. {
  5. public Form1()
  6. {
  7. InitializeComponent();
  8. }
  9. //连接数据库字符串
  10. private static  readonly string Constring = "server=.;database=stu;uid=sa;pwd=fiybird";
  11. SqlConnection con = new SqlConnection(Form1.Constring);//创建SqlConnection对象
  12. DataTable dt=new DataTable();//创建dataTable
  13. private SqlDataAdapter apt = null;//声明一个SqlDataAdapter对象
  14. private void Bind()
  15. {
  16. string sql = string.Format("select id,no,name,age,gender,address from stuinfo");
  17. apt = new SqlDataAdapter(sql, con);//实例化SqlDataAdapter
  18. apt.Fill(dt);//填充数据
  19. //SqlCommandBuilder 必不可少
  20. /*
  21. 为了生成 INSERT、UPDATE 或 DELETE 语句,SqlCommandBuilder 会自动使用 SelectCommand 属性来检索所需的元数据集。
  22. 如果在检索到元数据后(例如在第一次更新后)更改 SelectCommand,则应调用 RefreshSchema 方法来更新元数据。
  23. SelectCommand 还必须至少返回一个主键列或唯一的列。如果什么都没有返回,就会产生 InvalidOperation 异常,不生成命令。
  24. SqlCommandBuilder 还使用由 SelectCommand 引用的 Connection、CommandTimeout 和 Transaction 属性。
  25. 如果修改了这些属性中的一个或多个,或者替换了 SelectCommand 本身,用户则应调用 RefreshSchema。
  26. 否则,InsertCommand、UpdateCommand 和 DeleteCommand 属性都保留它们以前的值。
  27. 如果调用 Dispose,则会解除 SqlCommandBuilder 与 SqlDataAdapter 的关联,并且不再使用生成的命令。
  28. */
  29. SqlCommandBuilder sbBuilder=new SqlCommandBuilder(apt);
  30. this.dataGridView1.AutoGenerateColumns = false;//不自动生成列
  31. this.dataGridView1.DataSource = dt;
  32. }
  33. private void Form1_Load(object sender, EventArgs e)
  34. {
  35. Bind();
  36. }
  37. private void 保存ToolStripMenuItem_Click(object sender, EventArgs e)
  38. {
  39. apt.Update(dt);
  40. MessageBox.Show("保存成功!");
  41. }
  42. private void 刷新ToolStripMenuItem_Click(object sender, EventArgs e)
  43. {
  44. dt.Clear();//清空dataTable当前数据
  45. apt.Fill(dt);//重新填充数据
  46. }
  47. private void 删除ToolStripMenuItem_Click(object sender, EventArgs e)
  48. {
  49. //是否选中一行数据
  50. if (this.dataGridView1.CurrentRow.Selected)
  51. {
  52. DialogResult dr = MessageBox.Show("确定要删除么?", "友好提示", MessageBoxButtons.YesNo, MessageBoxIcon.Asterisk);
  53. if (dr == DialogResult.Yes)
  54. {
  55. this.dataGridView1.Rows.Remove(dataGridView1.CurrentRow);
  56. new SqlCommandBuilder(apt);
  57. apt.Update(dt);
  58. MessageBox.Show("删除成功!");
  59. }
  60. }
  61. else
  62. {
  63. MessageBox.Show("请先选中一行数据,然后在进行删除!");
  64. return;
  65. }
  66. }
  67. }
  68. }

SqlDataAdapter 对datagridview进行增删改(A)的更多相关文章

  1. 使用DataGridView进行增删改查,并同步到数据库

    DataGridView控件具有极高的可配置性和可扩展性.它提供有大量的属性.方法和事件,能够用来对该控件的外观和行为进行自己定义.以下通过一个小样例来展示DataGridView进行增删改查,并同步 ...

  2. 浅谈dataGridView使用,以及画面布局使用属性,对datagridview进行增删改查操作,以及委托使用技巧

        通过几天的努力后,对datagridview使用作一些简要的介绍,该实例主要运用与通过对datagridview操作.对数据进行增删改查操作时,进行逻辑判断执行相关操作.简单的使用委托功能,实 ...

  3. Winform开发之DataGridView的增删改

    DataGridView是一个非常强大的控件,用法很多.这里介绍一个简单的增删改例子. 贴效果图 右侧输入学生信息点击新增,将数据增加到数据库,并且加载到datagridview中,点击选择某条数据修 ...

  4. 对datagridview进行增删改(B)

    create DATABASE stu ON ( name='stu.mdf', filename='F:\胡浴东\数据库\stu数据库\stu.mdf', size=, filegrowth= ) ...

  5. datagridview数据绑定操作数据库实现增删改查

    DataSet数据集,数据缓存在客户端内存中,支持断开式连接.DataGridView控件绑定DataSet时,它自动的改变的DS的行的状态,而且在做增删改查的时候,可以借助SqlCommandBui ...

  6. c#操作数据库的增删改查语句及DataGridView简单使用

    下面是要用户名和密码连接数据库的操作: 一.定义连接字符串,用来链接SQL Server string str_con = "server=.(服务器名称一般为 . );database=W ...

  7. DataSet之增删改查操作(DataGridView绑定)

    DataSet数据集,数据缓存在客户端内存中,支持断开式连接.DataGridView控件绑定DataSet时,它自动的改变的DS的行的状态,而且在做增删改查的时候,可以借助SqlCommandBui ...

  8. winform窗体(六)——DataGridView控件及通过此控件中实现增删改查

    DataGridView:显示数据表,通过此控件中可以实现连接数据库,实现数据的增删改查 一.后台数据绑定:    List<xxx> list = new List<xxx> ...

  9. Winform(DataGridView)控件及通过此控件中实现增删改查

    DataGridView:显示数据表,通过此控件中可以实现连接数据库,实现数据的增删改查 一.后台数据绑定:    List<xxx> list = new List<xxx> ...

随机推荐

  1. .NET高级代码审计(第五课) .NET Remoting反序列化漏洞

    0x00 前言 最近几天国外安全研究员Soroush Dalili (@irsdl)公布了.NET Remoting应用程序可能存在反序列化安全风险,当服务端使用HTTP信道中的SoapServerF ...

  2. NTLM移除

  3. Android 使用 NYTimes Stores 缓存 network request

    NYTimes Stores 是一个缓存库,在 2017年的 AndroidMakers 大会上被介绍过. https://github.com/NYTimes/Store 实现一个 Disk Cac ...

  4. 常见配置redis.conf介绍

    参数说明redis.conf 配置项说明如下:1. Redis默认不是以守护进程的方式运行,可以通过该配置项修改,使用yes启用守护进程  daemonize no2. 当Redis以守护进程方式运行 ...

  5. dubbo实现原理之动态编译

    Dubbo为了实现基于spi思想的扩展特性,特别是能够灵活添加额外功能,对于扩展或则策略选择的设配类能够动态生成.对于一些需求已知的类如Protocal,它们的设配类代码dubbo可以直接的提供,但是 ...

  6. JVM锁优化

    1. 概述 JDK1.6版本花费了大量精力去实现各种锁优化,如适应性自旋,锁消除,锁粗化,轻量级锁,偏向锁等,这些技术都是为了在线程期间更高效的共享数据,以及解决竞争问题. 2. 自旋锁与自适应自旋 ...

  7. EF 通过修改模版 更改生成实体名称

    直接修改T4 模版中对应关系就可以了,我这里是去掉了表中的“_”

  8. python实用库:PrettyTable 学习

    python实用库:PrettyTable 学习 PrettyTable说明 PrettyTable 是python中的一个第三方库,可用来生成美观的ASCII格式的表格,十分实用. 以下为官方介绍: ...

  9. ORA-01113 & ORA-01110同时出现

    \NOARCHIVED LOG , 没备份 , Redo Log 被覆盖 , 某个datafile不能online 设计知识点:BBED> set block 1BBED> p kcvfh ...

  10. git常用命令(todo...)

    git init在目录中执行 git init,就可以创建一个 Git 仓库 git add test.javagit add 命令可将该文件添加到缓存(暂存区) git commit test.ja ...