我有一个C#ASP.net项目,它将数据集发送到我的连接类,我相应地更新数据库。
我发送的数据集中填充了数据库中2个表的数据,因此我使用了Join来获取数据。 (因此个人更新)
现在,我已经对数据集进行了更改,并希望更新数据库。我的代码的第1部分和第2部分都工作,如果一次只运行一个(因此应该注释掉第1或第2部分)。
但是当我尝试并运行它们时,它只用第一部分更新数据库(没有抛出错误,代码确实执行)
为什么会这样?在第一次更新后我也关闭并重新打开了我的连接,看看是否有任何区别。
public void udpateCourse(DataSet dataSetEmp)
{
try
{
conn.Open();
//SECTION 1 -- THE FIRST UPDATE
da = new SqlDataAdapter("select * from EthicsManagement", conn);
var builderForTable1 = new SqlCommandBuilder(da);
da.Update(dataSetEmp, "Table");
//SECTION 2 -- THE SECOND UPDATE
da = new SqlDataAdapter("select employeeId, name as [Employee Name] from EmployeeTable", conn);
builderForTable1 = new SqlCommandBuilder(da);
da.Update(dataSetEmp, "Table");
conn.Close();
}
catch (Exception ex)
{
throw new Exception("Problem with the SQL connection " + ex);
}
}
- Update-- 我试过的是什么
答案 0 :(得分:2)
我知道这是一个老问题,但也许对某人有帮助。
MSDN says the following happens when calling Update:
使用Update时,执行顺序如下:
- DataRow中的值将移至参数值。
- 引发OnRowUpdating事件。
- 该命令执行。
- 如果命令设置为FirstReturnedRecord,则第一个返回的结果将放在DataRow中。
- 如果有输出参数,则为 放在DataRow中。
- 引发OnRowUpdated事件。
- 调用AcceptChanges。
醇>
第二个Update()没有任何效果,因为它的更改是由AcceptChanges()命令提交的。