gpt4 book ai didi

c# - 用于更新数据集的 OracleDataAdapter CommandText

转载 作者:搜寻专家 更新时间:2023-10-30 23:14:06 27 4
gpt4 key购买 nike

我在我的项目中使用网格,这些网格是通过 DataSet 填充的s 和 DataTable秒。我用 DataNavigator关于 grid s 用于插入、删除和更新行,我想将更改提交给 database通过OracleDataAdapter . Update .我应该如何设置 CommandTextOracleDataAdapter对于 update , deleteinsert而只有一个 CommandText

最佳答案

当您使用 OracleDataAdapter 填充数据表时,您将适配器保存在一个全局变量中,您可以在需要更新后端数据库上的数据表时重用该变量。此适配器可以链接到类 OracleCommandBuilder 的对象这(如名称所解释的那样)为您构建适配器的 UpdateCommand、InsertCommand 和 DeleteCommand 属性。

当您调用 Adapter 的 Update 方法时,这些命令用于执行 sql 指令以更新您的表。

OracleDataAdapter _dataAdapter = null;

public void FillDataGridView(string conString, string selectCmd, string tableName)
{
using(OracleConnection con = new OracleConnection(conString))
{
_dataAdapter = new OracleDataAdapter();
_dataAdapter.SelectCommand = new OracleCommand(selectCmd, con);
OracleCommandBuilder cb = new OracleCommandBuilder(_dataAdapter);
con.Open();
DataSet ds = new DataSet();
_adapter.Fill(ds, tableName);
dataGridView1.DataSource = ds.Tables[0];
}
}

然后当你决定更新

// The OracleCommandBuilder has initialized the Insert/Update/Delete 
// command of the adapter thus the Update works as expected
DataTable dt = dataGridView1.DataSource as DataTable;
_adapter.Update(dt);

CommandBuilder 可以为您做的事情是有限的。特别是如果 select 命令没有检索表的主键,或者如果 select 命令将表连接在一起,则 CommandBuilder 无法创建相关命令,您需要手动定义它们

关于c# - 用于更新数据集的 OracleDataAdapter CommandText,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16787727/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com