DataAdapter更新命令

3

我正在使用ODP.NET提供程序,使用DataAdapterDataTable编辑/添加Oracle db表中的数据。

DataSet ds = new DataSet("report");
DataTable dt = new DataTable("report");
adptr = new OracleDataAdapter();
string myCmd = "select * from report";            

OracleCommand _cmd = new OracleCommand(myCmd, myDbConnection);

adptr.SelectCommand = _cmd;
adptr.Fill(dt);
ds.Tables.Add(dt);

接下来,我通过将数据绑定到网格并进行编辑来更改数据表中的数据,并像这样保存:

OracleCommandBuilder _cmdBld = new OracleCommandBuilder(adptr);
adptr.Update(ds, "report");

到目前为止一切都很好,它按照预期工作,每次修改都会提交到数据库(DB)。 但我的问题是这样的——当我从多个表中获取数据时。 就像这样:

string myCmd = 
    "select r.id, u.username, r.creation_date, r.owner 
     from report r inner join users u on r.user_id == u.id";

我知道我可以手动编写DataAdapter的更新命令(DataAdapter.UpdateCommand),然后保存,但我不确定该怎么做。你能给我一些指导吗?

谢谢!

1个回答

4
请查看MSDN提供的示例。我猜OracleDataAdapter使用相同的逻辑。 http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqldataadapter.updatecommand.aspx 以下是指定链接中的更新命令生成部分。
// Create the UpdateCommand.
command = new SqlCommand("UPDATE Customers SET CustomerID = @CustomerID, "+
     "CompanyName = @CompanyName WHERE CustomerID = @oldCustomerID", connection);
// Add the parameters for the UpdateCommand.
command.Parameters.Add("@CustomerID", SqlDbType.NChar, 5, "CustomerID");
command.Parameters.Add("@CompanyName", SqlDbType.NVarChar, 40, "CompanyName");
SqlParameter parameter = command.Parameters.Add("@oldCustomerID", 
     SqlDbType.NChar, 5, "CustomerID");
parameter.SourceVersion = DataRowVersion.Original;    
adapter.UpdateCommand = command;

1
谢谢!但是如果数据来自于两个连接的表,像我的例子一样,插入或更新命令会是什么样子呢? - maephisto

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接