使用SqlCommandBuilder自动更新DataGridView

注意:这种方式只适合单表
        private SqlDataAdapter adapter = null;
        private SqlCommandBuilder builder = null;
        private DataSet dataSet = null;
        private SqlConnection connection = null;

        private void btnSave_Click(object sender, EventArgs e)
        {
            //code to modify data in DataSet here
            //dataSet.Tables[0].Rows[0][2] = 9; //在DataGridView界面上的修改会自动更新到DataSet中


            builder.GetUpdateCommand();

            //Without the SqlCommandBuilder this line would fail
            int count = adapter.Update(dataSet, "table1");
        }

        private void btnQuery_Click(object sender, EventArgs e)
        {
            connection = new SqlConnection("server = 10.138.141.84; uid = sa; password = sa; database = mytest");

            adapter = new SqlDataAdapter();
            adapter.SelectCommand = new SqlCommand("select * from table1 where id1=1", connection);
            builder = new SqlCommandBuilder(adapter);

            connection.Open();

            //生成列的中文名称
            adapter.TableMappings.Add("table1", "table1");
            adapter.TableMappings[0].ColumnMappings.Add("id1", "用户");
            adapter.TableMappings[0].ColumnMappings.Add("id2", "姓名");
            adapter.TableMappings[0].ColumnMappings.Add("val", "年龄");

            dataSet = new DataSet();
            adapter.Fill(dataSet, "table1");//FILL的方法一定要带第二个参数,否则adapter.Update(dataSet, "table1")会提示找不到表"table1"

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


            //return dataSet;
        }

但遗憾的是,目前这种方式只支持单表的操作,不支持任何与多表相关的操作(包括同一视图中来自不同表的列)。

posted on 2009-10-19 14:32  highmayor  阅读(570)  评论(0编辑  收藏  举报

导航