考虑C#中网格上的更改,在DB上更新表

时间:2013-05-27 08:45:59

标签: c# datagrid datatable sql-update odp.net

我通过Data Grid在C#(WinForms)中填充System.Data.DataTableDataTable通过DB table填充ODP

我在data navigator中有一个Data Grid用于更新,删除和插入行。

我想使用DataTableData Grid中所做的所有更改提交到数据库。

我必须使用OracleDataAdapter,但我无法弄清楚如何实现这一目标。

我应该使用哪种CommandText来实现所有三个命令(updatedeleteinsert)?

下面的代码不起作用(可能因为我插入的CommandText不合适)

public void ExecuteNonQuery(string commandText, OracleCommand oracleCommand, CommandType commandType, DataTable dataTable)
{
        oracleCommand.CommandText = commandText;
        oracleCommand.CommandType = commandType;

        try
        {
            oracleCommand.Connection = m_Connection;
            OracleDataAdapter oracleDataAdapter = new OracleDataAdapter(oracleCommand);
            oracleDataAdapter.Update(dataTable);
        }
        catch (Exception)
        {
            LoggerTrace.Instance.Write(TraceEventType.Error, LoggerTrace.LoggerTraceSource.DatabaseManagerError, "Query could not be executed!");
            throw;
        }
}

2 个答案:

答案 0 :(得分:0)

for insert在数据表中创建一个新行并插入到数据表中,用于更新更新值,最后保存更改数据集或数据表

答案 1 :(得分:0)

OracleCommandBuilder在插入insert查询后生成相应的updatedeleteselect个查询。

string selectCommand = "select * from Table";
oracleDataAdapter.SelectCommand = new OracleCommand(selectCommand, m_Connection);
OracleCommandBuilder cmdBuilder = new OracleCommandBuilder(oracleDataAdapter);
DataTable dataTable = new DataTable();
oracleDataAdapter.Fill(dataTable);

OracleCommandBuilder以这种方式构建命令之后,您可以执行DataTable中的任何更新,如下所示:

oracleDataAdapter.Update(dataTable);

不允许使用序列,虚拟列等。