OracleDataAdapter更新数据集的CommandText

本文关键字:CommandText 数据集 更新 OracleDataAdapter | 更新日期: 2023-09-27 18:15:34

我在我的项目中使用网格,这些网格是通过DataSetDataTable s填充的。我在grid s上使用DataNavigator s来插入,删除和更新行,我想通过OracleDataAdapter将更改提交给databaseUpdate。当只有一个CommandText时,如何为update, deleteinsert设置OracleDataAdapterCommandText ?

OracleDataAdapter更新数据集的CommandText

当您使用OracleDataAdapter填充数据表时,您可以将适配器保存在一个全局变量中,以便在更新后端数据库上的数据表时重用。这个适配器可以链接到oraclecommanbuilder类的对象,oraclecommanbuilder(顾名思义)为您构建适配器的UpdateCommand、InsertCommand和DeleteCommand属性。

当您调用适配器的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就不能创建相对命令你需要手动定义它们