您的位置:首页 > 产品设计 > UI/UE

C#用SqlCommandBuilder 更新数据库数据,解决更新数据不同步到数据库

2017-09-25 21:34 676 查看
中午在CSDN找的办法没能解决,然后从这个帖子找到解决方法点我过去

用SQL语句更新就没问题,用SqlCommandBuilder更新只有DataGridView控件更新了而数据库里面并没有更新,然后发现是这个原因。

SqlConnection con;

SqlDataAdapter da;

DataSet ds;

DataTable dt;

SqlCommandBuilder cb;


Form_Load代码

string sql = "select * from Employess";

con = new SqlConnection(str);

con.Open();

da = new SqlDataAdapter(sql,con);

cb = new SqlCommandBuilder(da);

ds = new DataSet();

da.Fill(ds, "Employess");

dt = ds.Tables["Employess"];

dataGridView1.DataSource = dt;

con.Close();


这是删除button的代码

//删除指定行数据

DataRow[] rows = dt.Select("EmpName= '"+textBox1.Text+"'", "");

foreach (DataRow row in rows)

{

row.Delete();

}

cb = new SqlCommandBuilder(da);  //这句是关键,一定要写上这句

da.Update(ds.Tables[0]);


这样问题就解决了,同理新增行,删行也要加上这句

不过单单更新一行数据,如
dt.Rows[0]["EmpName"] = "张三";


这样确实可以更新到数据库

中间查了一些博客说,当调用SqlDataAdapter的Update方法时,DataTable有个属性,当表中数据改变会,例如删除一行,他会有个Deleted属性,然后Update更新时就会找这些更改的属性然后用SqlCommandBuilder 生成自动语句

可以用
SqlCommandBuidler.GetDeleteCommand()
方法获得自动生成的语句

中间找的网页不知道去哪了,刚才翻历史记录也没翻到,sorry啊。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  数据库 c#