DataAdapter Update 方法批量更新多行
Posted
技术标签:
【中文标题】DataAdapter Update 方法批量更新多行【英文标题】:DataAdapter Update method batch updates multiple rows 【发布时间】:2014-11-09 11:11:31 【问题描述】:我对 DataAdapter 更新方法有疑问:
这是每一行的插入代码:
private void btnInsert_Click(object sender, EventArgs e)
dtTESTDB = dsTESTDB.Tables["dstblTESTDB"];
drTblTESTDB = dtTESTDB.NewRow();
drTblTESTDB.BeginEdit();
drTblTESTDB["ID"] = txtID.Text;
drTblTESTDB["Name"] = txtName.Text;
drTblTESTDB["Family"] = txtFamily.Text;
dtTESTDB.Rows.Add(drTblTESTDB);
dtTESTDB = dsTESTDB.Tables[0].GetChanges(DataRowState.Added);
dtlAdd = dtTESTDB;
drTblTESTDB.EndEdit();
cmd.Parameters.AddWithValue("@ID", int.Parse(txtID.Text));
cmd.Parameters.AddWithValue("@Name", txtName.Text);
cmd.Parameters.AddWithValue("@Family", txtFamily.Text);
cmd.CommandType = CommandType.Text;
cmd.Connection = SQLConnection;
cmd.CommandText = "insert into tblTESTDB
(ID,Name,Family) values (@ID,@Name,@Family)";
cmd.UpdatedRowSource = UpdateRowSource.None;
da.InsertCommand = cmd;
现在,我想在插入多行后更新数据库:
private void btnSynchronize_Click(object sender, EventArgs e)
try
da.UpdateBatchSize = 0;// dttblAdd.Rows.Count;
da.Update(dtlAdd);
dsTESTDB.AcceptChanges();
catch (SqlException sqlEX)
MessageBox.Show(sqlEX.ToString());
catch (System.Exception EX)
MessageBox.Show(EX.ToString());
此代码通过一行插入而没有错误,但如果一次插入两个或多个记录(行),DataAdapter 仅将最后一行插入 DATABASE 并抛出异常。 为什么?
(对不起 - 我的英语说或写得不好)
【问题讨论】:
【参考方案1】:UpdateBatchSize = 0 可能是问题所在。您需要将其设置为行数。
【讨论】:
以上是关于DataAdapter Update 方法批量更新多行的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 DataAdapter.Update 方法同时更新 Access 数据库和 .NET DataSet 对象?
为啥 DataAdapter.Update() 不更新数据库