DataAdapter Update方法批量更新多行

时间:2014-11-09 11:11:32

标签: insert rows dataadapter

我遇到DataAdapter Update方法的问题:

这是每行的插入代码:

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 个答案:

答案 0 :(得分:0)

UpdateBatchSize = 0可能是问题所在。您需要将它设置为那些行作为行数。