我通过Data Grid
在C#(WinForms)中填充System.Data.DataTable
。 DataTable
通过DB table
填充ODP
。
我在data navigator
中有一个Data Grid
用于更新,删除和插入行。
我想使用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;
}
}
答案 0 :(得分:0)
for insert在数据表中创建一个新行并插入到数据表中,用于更新更新值,最后保存更改数据集或数据表
答案 1 :(得分:0)
OracleCommandBuilder
在插入insert
查询后生成相应的update
,delete
和select
个查询。
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);
不允许使用序列,虚拟列等。