更新DataTable - 适用于插入但不适用于更新 [英] Update DataTable - OK for Insert but not for Update
本文介绍了更新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屋!
查看全文