使用DataTable Update()方法更新多个SQL表?

时间:2015-06-24 16:16:44

标签: c# datatable dataadapter sqldataadapter

我正在尝试使用我的网络表单中已更改的数据更新我的SQL后端。

该数据最初是从SQL中提取的,如此

string cs = ConfigurationManager.ConnectionStrings["ConnectionString"].ToString();
SqlConnection connection = new SqlConnection(cs);
SqlCommand command = new SqlCommand("my.storedprocedure", cs);
command.CommandType = CommandType.StoredProcedure;
command.Parameters.Add(new SqlParameter("@customerID", custid));

command.CommandTimeout = 300;

connection.Open();
SqlDataAdapter sda = new SqlDataAdapter(command);
connection.Close();

sda.FillSchema(myDataTable, SchemaType.Source);

sda.Fill(myDataTable);

存储过程进行选择

SELECT c.*
,cs.*
,p.*
,sl.*
,drl.*
FROM tableC as c
INNER JOIN tableCS as cs ON c.[custID] = cs.[custID]
INNER JOIN tableSL as sl ON cs.[custStatusID] = sl.[custStatusID]
LEFT OUTER JOIN tableP as p ON c.custID = p.custID
LEFT OUTER JOIN tableDRL as drl ON cs.custID = drl.custID
WHERE c.[custID] = @custID AND c.[EndDate] IS NULL AND cs.[EndDate] IS NULL

然后我操作填充了此存储过程的数据表,调用dt.NewRow(),将值添加到该新行,将该行添加到数据表中。设置上一行中的字段等。

我的问题是,当我准备调用SqlDataAdapter.Update(myDataTable)时,数据适配器会继续进行并更新我加入的所有表吗?根据我的数据表中的内容?

1 个答案:

答案 0 :(得分:0)

简短的回答是否定的 - 单个适配器适用于单个表。如果使用ADO.NET,则需要使用DataSet。

使用DataSet:

Populating a DataSet from a DataAdapter

ADO.NET - Updating Multiple DataTables

Fill DataSet with multiple Tables and update them with DataAdapter

使用TableAdapterManager:

TableAdapterManager Overview