使用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;
}
但遗憾的是,目前这种方式只支持单表的操作,不支持任何与多表相关的操作(包括同一视图中来自不同表的列)。