欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  数据库

关于DataGridView控件通过dataset直接更新数据库

程序员文章站 2022-05-19 08:36:54
...

今天做了一个小功能,对一个数据库表中的信息直接进行增、删、改操作,用到了DataGridView控件。 功能描述:窗体加载时,查询出表中的内容,并绑定到DataGridView中显示。可以对表中的数据进行增/删、改操作。 开始用到了比较麻烦的方法,为DataGridView添加

今天做了一个小功能,对一个数据库表中的信息直接进行增、删、改操作,用到了DataGridView控件。
功能描述:窗体加载时,查询出表中的内容,并绑定到DataGridView中显示。可以对表中的数据进行增/删、改操作。
  开始用到了比较麻烦的方法,为DataGridView添加了contextMenuStrip,提供了三种方法。比较麻烦。下面是一部分代码:

1 privatevoid 删除ToolStripMenuItem_Click(object sender, EventArgs e)
2 {
3 int[] row =newint[dataGridView1.SelectedRows.Count]; //存储选定的行的索引号
4 int[] id =newint[dataGridView1.SelectedRows.Count]; //存储选定行的id号 用于删除时查询的条件
5 int count = dataGridView1.SelectedRows.Count; //存储开始选定了的行数
6 for (int j =0; j dataGridView1.SelectedRows.Count; j++) //利用循环将选定的行索引存入row【】数组中
7 {
8 row[j] = dataGridView1.SelectedRows[j].Index;
9 }
10 for (int i =0; i count; i++) //利用循环
11 {
12
13 dataGridView1.CurrentCell = dataGridView1[0, row[i]]; //设置当前活动的单元格的索引是【0,row【i】】,即所有选定行的第一列的值(Att_Id)
14 id[i] =Convert.ToInt32(dataGridView1.CurrentCell.Value);
15
16 }
17 bool yesno=false;
18 if (MessageBox.Show("确定要删除吗","删除确认",MessageBoxButtons.OKCancel,MessageBoxIcon.Question) == DialogResult.OK)
19 {
20 for (int s =0; s count; s++)
21 {
22 string sql ="Delete from Attributes where Att_Id=@att_id";
23 SqlParameter[] p =new SqlParameter[]{
24 new SqlParameter("@att_id",SqlDbType.Int)};
25 p[0].Value = id[s];
26 int val = (int)sqlhelper.delete(sql, p);
27 if (val >0)
28 {
29 yesno =true;
30 }
31 else
32 {
33 yesno =false;
34 break;
35 }
36
37 }
38 if (yesno ==true)
39 {
40 MessageBox.Show("删除成功!");
41 }
42 databind();
43 }
44 else
45 {
46
47 }
48 }

上面仅仅是删除这一项功能。所以非常麻烦!!

    于是,想到了另一种比较简单而且很直观的方法,利用SqlDataAdapter的update方法,直接在DataGridView中进行编辑(添加新数据、更改数据),只需给删除功能另加个按钮或者弹出菜单,datagridview1.Rows.RemoveAt(dataGridView1.CurrentRow.Index)删除选中行,有一点每种不足就是没删除一条就要点击一下按钮,而第一种方法可以一次性删除多条数据。

关于DataGridView控件通过dataset直接更新数据库关于DataGridView控件通过dataset直接更新数据库View Code

1 privatevoid leixing_Load(object sender, EventArgs e)
2 {
3
4 sqlhelper.conn.Open();
5
6 da =new SqlDataAdapter("Select Class_Id as '编号',Class_Type as '商品类型' from Class", sqlhelper.conn);
7 dt =new DataSet();
8 da.Fill(dt, "info");
9 dataGridView1.DataSource = dt.Tables[0];
10 //dataGridView1.DataMember = "info";
11 dataGridView1.Columns[0].Width =130;
12
13
14 sqlhelper.conn.Close();
15
16 }

再添加一个按钮叫做“保存更新” 代码:

这样就实现了全部功能。比较简单。

关于DataGridView控件通过dataset直接更新数据库关于DataGridView控件通过dataset直接更新数据库View Code

1 privatevoid baocun_Click(object sender, EventArgs e)
2 {
3
4
5 if (dt.HasChanges())
6 {
7 SqlCommandBuilder scmb =new SqlCommandBuilder(da);
8 da.Update(dt.Tables[0]);
9 dt.AcceptChanges();
10 }
11
12
13
14 }

这样做的前提是,数据表必须设定主键。