DataAdapter的更新命令
问题描述:
我使用的是DataAdapter
和DataTable
编辑/在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
),保存前,但我不知道如何。你能给我一些指导吗?
谢谢!
答
查看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;
感谢更新指令生成器!但是如果数据是从两个连接表中提供的,那么插入或者更新命令会如何呢? – maephisto 2011-05-26 08:07:49