考虑到c#中网格的变化,在DB上更新一个表

本文关键字:更新 一个 DB 网格 中网 变化 考虑到 | 更新日期: 2023-09-27 18:15:43

我正在通过System.Data.DataTable填充c# (WinForms)中的Data GridDataTableDB tableODP填充。

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

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

我必须使用OracleDataAdapter,但我不知道如何实现这一点。

我应该使用什么样的CommandText来实现所有三个命令(update, delete, insert)?

下面的代码不工作(可能是因为我插入的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;
        }
}

考虑到c#中网格的变化,在DB上更新一个表

for insert在数据表中创建新行并插入到数据表中,for update更新值,最后对数据集或数据表进行保存更改

OracleCommandBuilder在插入select查询后产生相应的insert, updatedelete查询

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);