更新DataTable - 适用于插入但不适用于更新 [英] Update DataTable - OK for Insert but not for Update

查看:91
本文介绍了更新DataTable - 适用于插入但不适用于更新的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我尝试更新DataTable。 Insert函数有效,而不是更新函数。相关代码(简化)如下。我错过了什么?提前致谢。

I tried to update a DataTable. The Insert function works, not update function does not. The related code (simplified) is below. Did I miss something? Thanks in advance.

private void InitializeCommand(string sCase, OleDbDataAdapter adapter, string tblName)   {
  OleDbConnection connection = (OleDbConnection)adapter.SelectCommand.Connection;

  // Insert
  adapter.InsertCommand = connection.CreateCommand();
  adapter.InsertCommand.CommandText = "...";     // Simplified here
  AddParameters(adapter.InsertCommand,"xxx",...);   // Simplified here

  // Update
  adapter.UpdateCommand = new OleDbCommand();
  AddParameters(adapter.UpdateCommand,"xxx",...);   // Simplified here
}

protected void ButtonSubmit_Click(object sender, EventArgs e)
{
    adapterRequest = new OleDbDataAdapter("Select * from " + sRequest, dHelp.connectionString2);
    InitializeCommand(TextBoxStatus.Text, adapterRequest, sRequest);
    dsRequest = new DataSet("RequestSet");
    adapterRequest.Fill(dsRequest, sRequest);
    tbl_Request = dsRequest.Tables[0];

    DataRow newRow;    // for Insert case
    ...

    // Update case
    tbl_Request.Rows[10].BeginEdit();  // Simplified here
    tbl_Request.Rows[10][3] = "A Test String";
    ...
    tbl_Request.Rows[10].EndEdit();
    tbl_Request.Rows[10].AcceptChanges();

    adapterRequest.Update(dsRequest, "tbl_Request");
    dsRequest.AcceptChanges();
}

推荐答案

问题解决了。相关代码如下:

Problem solved. The related code is below:
OleDbDataAdapter adapterRequest = new OleDbDataAdapter("Select * from " + sRequest, dHelp.connectionString2);
OleDbConnection connection = (OleDbConnection)adapterRequest.SelectCommand.Connection;
connection.Open();
OleDbCommandBuilder cb = new OleDbCommandBuilder(adapterRequest);
DataTable dtTarget = new DataTable();
adapterRequest.Fill(dtTarget);
...
// Update the record
dtTarget.Rows[intRowNo][dtTarget.Columns["AssignedBy"].ColumnName] = TextBoxAssigner.Text;
...
adapterRequest.UpdateCommand = cb.GetUpdateCommand();
adapterRequest.Update(dtTarget);
connection.Close();


这篇关于更新DataTable - 适用于插入但不适用于更新的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆