考虑到c#中网格的变化,在DB上更新一个表
本文关键字:更新 一个 DB 网格 中网 变化 考虑到 | 更新日期: 2023-09-27 18:15:43
我正在通过System.Data.DataTable
填充c# (WinForms)中的Data Grid
。DataTable
由DB table
经ODP
填充。
我在Data Grid
中有一个data navigator
用于更新,删除和插入行。
我想使用DataTable
将Data 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;
}
}
for insert在数据表中创建新行并插入到数据表中,for update更新值,最后对数据集或数据表进行保存更改
OracleCommandBuilder
在插入select
查询后产生相应的insert
, update
和delete
查询
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);