关于 修改DataGridView 内的数据后点 保存 更新到数据库
写详细点谢谢 我是新手 

解决方案 »

  1.   

    看你的查询结果是从一个表还是多个表里面来的了,如果是一个表的查询结果,用SqlCommandBuilder就好。  //之前ds要填充好
      SqlCommandBuilder b = new SqlCommandBuilder(sda);
      sda.Update(ds, "tableName");
    如果你是联合查询,多表查询的结果,就比较麻烦了,可以去写相应更新的update数据库语句,更新你相应的项
      

  2.   

    其实有很多方法,但哪一个方法都不会很简单,你可以关联到一个DataAdapter上并且给它UpdateCommand,InsertCommand,DeleteCommand,SelectCommand等几个Command属性来更新,你也可以把它们拼成一个大的Sql语句来更新,你也可以把每一行数据组合成一个Xml一次性传到数据库端,使用数据库的Xml处理功能来处理。方法不一。
      

  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.Data.SqlClient;namespace winform1{public partial class Form3 : Form{public Form3(){InitializeComponent();}private SqlConnection cn;private SqlCommandBuilder builder;private SqlDataAdapter da;private DataSet ds;//查找事件,点击页面“查找”,       private void butSearch_Click(object sender, EventArgs e){cn = new  SqlConnection("server=.;database=test;uid=sa;pwd=123");cn.Open();ds = new DataSet();SqlCommand cmd = new SqlCommand("select * from Test", cn);da = new SqlDataAdapter(cmd);//添加必要的列和主键信息以守成架构           da.MissingSchemaAction = MissingSchemaAction.AddWithKey;builder = new SqlCommandBuilder(da);da.Fill(ds, "Test");//表名一定不能少哦           this.dataGridView1.DataSource = ds.Tables[0].DefaultView;}//更新事件       private void butUpdate_Click(object sender, EventArgs e){int row = da.Update(ds, "Test");MessageBox.Show("更新完成" + row + builder.GetUpdateCommand().CommandText);}//插入新记录事件       private void btnInsert_Click(object sender, EventArgs e){DataRow findRow = ds.Tables[0].Rows.Find("1111");//获取包含指定主键值的行           if (findRow != null){MessageBox.Show("已有这个记录");return;}DataRow dr = this.ds.Tables[0].NewRow();dr["StuId"] = this.texStuId.Text;dr["StuName"] = this.texStuName.Text;dr["StuScore    "] = "100";this.ds.Tables[0].Rows.Add(dr);int row = da.Update(ds, "Test");MessageBox.Show("添加完成" + row + builder.GetInsertCommand().CommandText);}//删除选中记录       private void btnDelete_Click(object sender, EventArgs e){ds.Tables[0].Rows[this.dataGridView1.CurrentRow.Index].Delete();int row = da.Update(ds, "Test");MessageBox.Show("删除完成" + row + builder.GetDeleteCommand().CommandText);}//查询事件       private void btnSearch_Click(object sender, EventArgs e){SqlCommand cmd = new SqlCommand("select * from Test where StuId=@StuId", cn);cmd.Parameters.Add("@StuId", SqlDbType.Char, 8);cmd.Parameters["@StuId"].Value = this.texId.Text;da = new SqlDataAdapter(cmd);ds.Clear();da.Fill(ds, "Test");this.dataGridView1.DataSource = ds.Tables[0].DefaultView;}}}