2013-04-16 56 views
1

我有一個C#ASP.net項目,發送數據集到我的連接類,我相應地更新數據庫。爲什麼SqlDataAdapter.Update只能調用一次?

我發送的數據集中填充了來自我的數據庫的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-- 我已經試過

  1. 關閉並重新打開連接
  2. 適配器的新實例和建設者
  3. 甚至把它們放在一個單獨的方法
  4. 有一個查詢(兩個表上的連接)

回答

2

我知道這是一個老問題,但也許它有助於某人。

MSDN says the following happens when calling Update:

當使用更新,執行的順序如下:

  1. 在DataRow中的值被移動到的參數值。
  2. 引發OnRowUpdating事件。
  3. 該命令執行。
  4. 如果該命令設置爲FirstReturnedRecord,則第一個返回的結果將放置在DataRow中。
  5. 如果有輸出參數,它們是放置在DataRow中的 。
  6. 引發OnRowUpdated事件。
  7. AcceptChanges被調用。

第二次更新()沒有任何影響,因爲改動它是由的AcceptChanges()命令提交。

+0

對我來說,這仍然是一個相關的問題。謝謝你回答我的問題 – Ruan

相關問題