c#datagridview怎么直接修改数据库数据,最好给个事例

 我来答
xiangjuan314
2016-03-02 · TA获得超过3.3万个赞
知道大有可为答主
回答量:2.9万
采纳率:0%
帮助的人:2808万
展开全部

实现思路:

  1. 实现数据库和datagridview数据连接

  2. 实现修改datagridview触发事件,获取更新数据存放在变量里

  3. 通过变量的变化实现数据库更新功能。

功能代码:

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Text;

using System.Windows.Forms;

using System.Collections;

using System.Data.SqlClient;


namespace Quanxian

{

    public partial class Form2 : Form

    {

        public Form2()

        {

            InitializeComponent();

        }

        private int job_id;

        private string job_desc;

        private int min_lvl;

        private int max_lvl;


        private void Form2_Load(object sender, EventArgs e)

        {

            binddatagridview();

        }

        /// <summary>

        /// 绑定Datagridview的方法

        /// </summary>

        private void binddatagridview()

        {

            SqlConnection sqlcon = new SqlConnection("server=.;uid=sa;pwd=;database=pubs");

            SqlDataAdapter sqldap = new SqlDataAdapter("select * from jobs", sqlcon);

            DataSet ds = new DataSet();

            sqldap.Fill(ds);

            this.dataGridView1.DataSource = ds.Tables[0];

        }

        /// <summary>

        /// 编辑单元格后触发

        /// </summary>

        /// <param name="sender"></param>

        /// <param name="e"></param>

        private void dataGridView1_CellEndEdit(object sender, DataGridViewCellEventArgs e)

        {

            if (dataGridView1.Rows.Count > 0)

            {

                job_id = int.Parse (this.dataGridView1.Rows[e.RowIndex].Cells[0].Value.ToString());

                job_desc = this.dataGridView1.Rows[e.RowIndex].Cells[1].Value.ToString();

                min_lvl = int.Parse(this.dataGridView1.Rows[e.RowIndex].Cells[2].Value.ToString());

                max_lvl = int.Parse(this.dataGridView1.Rows[e.RowIndex].Cells[3].Value.ToString());

            }

        }

        /// <summary>

        /// 修改

        /// </summary>

        private void button1_Click(object sender, EventArgs e)

        {

            SqlConnection sqlcon = new SqlConnection("server=.;uid=sa;pwd=;database=pubs");

            string str = "update jobs set job_desc='" + job_desc + "',min_lvl=" + min_lvl + ",max_lvl=" + max_lvl + " where job_id=" + job_id + "";

            SqlCommand sqlcom = new SqlCommand(str,sqlcon);

            try

            {

                sqlcon.Open();

                if (sqlcom.ExecuteNonQuery() > 0)

                    MessageBox.Show("保存成功");

                else

                    MessageBox.Show("保存失败!");

            }

            catch

            {   

                //异常

            }

            finally

            { sqlcon.Close();}

        }

        /// <summary>

        /// 刷新

        /// </summary>

        private void button2_Click(object sender, EventArgs e)

        {

            binddatagridview();

        }


    }

}

sdc102015
2011-10-08 · TA获得超过282个赞
知道答主
回答量:59
采纳率:100%
帮助的人:14.7万
展开全部
要在datagridview中直接修改数据库,应该在填充datagridview时用SqlDataAdapter对象和DataSet对象,修改时用SqlCommandBuilder对象
SqlCommandBuilder scb=new SqlCommandBuilder(da); <da为SqlDataAdapter的实例对象>
da.Update(ds,"info");<ds为DataSet的实例对象,info为DataSet填充datagridview时da.File(ds,"info")中的info>
追问
能给个事例代码吗?谢谢了
追答
SqlDataAdapter da;
DataSet ds = new DataSet();
private void button1_Click(object sender, EventArgs e)
{
ds.Clear();
string conne = "Data Source=.;AttachDbFilename=D:\\web\\MySchool.mdf;Integrated Security=True";
SqlConnection conn = new SqlConnection(conne);
string sql = "select studentid,studentname,sex,phone,address,jobwanted from student where loginid like '%";
if (textBox1.Text == "")
{
MessageBox.Show("请输入您要查找的用户ID!");
}
else
{
sql += textBox1.Text + "%'";
}
try
{
conn.Open();
da = new SqlDataAdapter(sql, conn);
da.Fill(ds, "studentinfo");
if (ds.Tables[0].Rows.Count == 0)
{
MessageBox.Show("没有您要查询的学生信息!");
}
else
{
dataGridView1.DataSource = ds.Tables[0];
}
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
finally
{
conn.Close();
}
}

private void button3_Click(object sender, EventArgs e)
{
button1_Click(sender, e);
}

private void 修改btn_Click(object sender, EventArgs e)
{
SqlCommandBuilder sb = new SqlCommandBuilder(da);
da.Update(ds,"studentinfo");
MessageBox.Show("修改成功!");
}
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式