2011-05-26 116 views
2

我使用的是DataAdapterDataTable編輯/在Oracle數據庫表添加數據,使用ODP.NET供應商。DataAdapter的更新命令

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),保存前,但我不知道如何。你能給我一些指導嗎?

謝謝!

回答

3

查看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; 
+0

感謝更新指令生成器!但是如果數據是從兩個連接表中提供的,那麼插入或者更新命令會如何呢? – maephisto 2011-05-26 08:07:49