当前位置:编程学习 > C#/ASP.NET >>

急救:向datagridview添加数据,删除数据

本人是名学生,不太懂代码上的问题,所以请XD们可以详解
datagridview  已经连上SQL2005中的其中一个数据库(自己建的)

我已经设置了 datagridview 启动编辑,启动添加,
我想直接按button1 为添加数据  button2为删除数据  并且与数据同步
谢谢你们了
这是我的毕业设计
--------------------编程问答-------------------- 不要这样添加按钮    启用datagridview自带的添加删除按钮就可以了  --------------------编程问答-------------------- 可以通过获取选中datagridview的行的主键

来进行数据的删除

添加数据直接进行数据库插入操作就可以 --------------------编程问答-------------------- 删除可以直接DEL。

adaper.update()就可以了。 --------------------编程问答-------------------- (1)删除数据  直接删除 dateTable 中的当前行,然后再删除数据库中相同自增ID号的记录
(2)新增数据  先往数据库中增加数据,并返回自增ID,填充到当前行. --------------------编程问答-------------------- this.dataGridView1.Rows.Add("a","b");
this.dataGridView1.Rows.RemoveAt(this.dataGridView1.SelectedRows[0].Index);

DataSet ds = new DataSet();
        SqlDataAdapter sda;
        private void btn1_Click(object sender, EventArgs e)
        {
            ds.Tables.Clear();
            sda = new SqlDataAdapter("select * from Tb", conn);
            sda.Fill(ds);
            this.dataGridView1.DataSource = ds.Tables[0];
        }

        private void btn2_Click(object sender, EventArgs e)
        {
            SqlCommandBuilder scb = new SqlCommandBuilder(sda);
            sda.Update(ds);
            this.dataGridView1.DataSource = ds.Tables[0];
        }
http://topic.csdn.net/u/20090130/20/1c6708ce-db4e-495a-a21b-101fecb9596d.html --------------------编程问答-------------------- 你的毕业设计太简单了吧,呵呵

首先,你要用SqlConnection连接到后台数据库,以一个教务管理数据库为例:
SqlConnection sqlConn;
            SqlDataAdapter sqlDa;
            DataSet sqlDs;
            sqlConn = new SqlConnection("Data Source=.;Initial Catalog=jwinfo;Integrated Security=True;");


然后,你要读取出某个表的记录绑定到DataGridView中,下面是绑定显示学生信息表记录:
            sqlDa = new SqlDataAdapter("SELECT * FROM 学生信息", sqlConn);

            sqlDs = new DataSet();
            sqlDa.Fill(sqlDs, "学生信息");

            dataGridView1.DataSource = sqlDs.Tables["学生信息"];


这样你就可以直接在DataGridView中编辑数据了,编辑后,点击一个按钮保存:
        //更新
        private void button1_Click(object sender, EventArgs e)
        {
            if (sqlDs.HasChanges())
            {
                try
                {
                    sqlDa.Update(sqlDs);
                    sqlDs.AcceptChanges();
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message, "更新失败!", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }
        }
--------------------编程问答--------------------
        private void button2_Click(object sender, EventArgs e)
        {
            //删除首先要定位到当前选中的记录
            int delRowIndex = dataGridView1.CurrentRow.Index;
            this.dataGridView1.Rows.RemoveAt(delRowIndex);

            //然后调用保存按钮保存删除操作
            button1.PerformClick();
        }
--------------------编程问答-------------------- 贴出一个完整的吧,呵呵:

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

namespace DataGridViewDemo
{
    public partial class DataGridViewCustomPaint : Form
    {
        SqlConnection sqlConn;
        SqlDataAdapter sqlDa;
        DataSet sqlDs;

        public DataGridViewCustomPaint()
        {
            InitializeComponent();
        }

        private void DataGridViewCustomPaint_Load(object sender, EventArgs e)
        {

            sqlConn = new SqlConnection("Data Source=.;Initial Catalog=jwinfo;Integrated Security=True;");
            sqlDa = new SqlDataAdapter("SELECT * FROM 学生信息", sqlConn);

            sqlDs = new DataSet();
            sqlDa.Fill(sqlDs, "学生信息");
            dataGridView1.DataSource = sqlDs.Tables["学生信息"];

            //然后用SqlCommandBuilder自动为SqlDataAdapter生成Insert、Update、Delete命令 
            SqlCommandBuilder sqlCmdBuilder = new SqlCommandBuilder(sqlDa);
        }

        //更新
        private void button1_Click(object sender, EventArgs e)
        {
            if (sqlDs.HasChanges())
            {
                try
                {
                    sqlDa.Update(sqlDs.Tables["学生信息"]);
                    sqlDs.Tables["学生信息"].AcceptChanges();
                    MessageBox.Show("更新成功!", "操作结果",MessageBoxButtons.OK, MessageBoxIcon.Information );
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message, "更新失败!", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }
        }

        //删除
        private void button2_Click(object sender, EventArgs e)
        {
            //删除首先要定位到当前选中的记录
            int delRowIndex = dataGridView1.CurrentRow.Index;
            if (delRowIndex != -1)
                this.dataGridView1.Rows.RemoveAt(delRowIndex);

            //然后调用保存按钮保存删除操作
            button1.PerformClick();
        }
    }
}
--------------------编程问答--------------------
引用 8 楼 computerfox 的回复:
贴出一个完整的吧,呵呵:

C# code

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
u……

这个答案很完整了! --------------------编程问答-------------------- 你也太浮躁了吧,最简单的删除查询都不知道怎么做,还是去看书吧,现在的参考书这方面控件的使用都说的很详细的、 --------------------编程问答--------------------
引用 8 楼 computerfox 的回复:
贴出一个完整的吧,呵呵:

C# code

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
u……

………… --------------------编程问答-------------------- 我也不会
呵呵 进来一起学习 --------------------编程问答-------------------- computerfox 总是很详细 定 --------------------编程问答-------------------- 加我QQ我可以給你個例子,635140279 --------------------编程问答--------------------
引用 5 楼 wuyq11 的回复:
this.dataGridView1.Rows.Add("a","b");
this.dataGridView1.Rows.RemoveAt(this.dataGridView1.SelectedRows[0].Index);

DataSet ds = new DataSet();
  SqlDataAdapter sda;
  private void btn1_Click(obje……

我勒个去 原来这么简单!! --------------------编程问答-------------------- 学习。。。。 --------------------编程问答--------------------
引用 13 楼 wc1432 的回复:
computerfox 总是很详细 定


我就喜欢这样的人 对初学者很有耐心 --------------------编程问答-------------------- 感谢“computerfox”的CODE,我解决问题了! --------------------编程问答-------------------- 哎。慢慢来,多做些就会了。。。。 --------------------编程问答-------------------- 连接sqlconnection,执行sqlcommand,更新insert,修改update,查询select,删除delete,绑定databind
数据集dataset,填充数据集dt.fill(ds) --------------------编程问答-------------------- 我也不会
进来一起学习 --------------------编程问答-------------------- View怎么能删除?大家有没有用过呀? --------------------编程问答-------------------- 学习了!! --------------------编程问答-------------------- 来学习 XD --------------------编程问答-------------------- --------------------编程问答-------------------- computerfox 果然讲解详细,彰显大家风范,我辈之楷模 --------------------编程问答-------------------- --------------------编程问答-------------------- 毕业设计。。。
我学C#的第一个上机题目。。。
加油啊!LZ --------------------编程问答-------------------- 学习~~不过我也好奇为什么不用gridview自带的添加删除啊? --------------------编程问答-------------------- 学习。。。 --------------------编程问答-------------------- 看了那个回复,照着做了,N久,什么找不到表啊,什么动态SQL啊,,啥错误都来了,,最后找到一个办法,给表设置主键,,解决了,, --------------------编程问答--------------------
引用 8 楼 computerfox 的回复:
贴出一个完整的吧,呵呵:

C# code


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


非常感谢8楼对我们这些小白的帮助,但是我发现有个错误

sqlDa.Update(sqlDs.Tables["学生信息"]);
sqlDs.Tables["学生信息"].AcceptChanges();

两句应该互换位置,因为这样会引发违反并发性错误。比如在添加一行,再立刻删除这一行时,如果先update,就会发现内存里的dataset的这一行没有更新 --------------------编程问答-------------------- 对不起,是我错了,是由于我使用的access数据库主键自增的原因,8楼写的没错,非常抱歉!
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,