2011-08-14 64 views
1

如果我有一個數據集被稱爲myDs,我在它通過直接訪問像一個循環編輯字段中的以下內容:如何在更改數據庫後保存DataSet?

for (int i = 0; i < myDS.Tables[TableName].Rows.Count; i++) 
{ 

    //some function or web method to get the id value of the record being updated 
    int n = getNewNumber(); 

    //updating the dataset record according to some condition 
    if (n == 0) 
    { 
     myDS.Tables[TableName].Rows[i]["id"] = n; 
     myDS.Tables[TableName].Rows[i]["description"] = "some data"; 
    } 
    else 
    { 
     myDS.Tables[TableName].Rows[i]["id"] = n; 
     myDS.Tables[TableName].Rows[i]["description"] = "new data"; 
    } 
} 

如何做出這些改變在數據庫中完成的,因爲我可以看到它在GridView當我做databind()但數據庫不受影響,我嘗試使用OdbcDataAdapter和OdbcCommandBuilder的更新方法填充&?

+0

後輸入兩個線** **什麼數據庫及其說明您使用的版本? –

+0

數據庫是sybase,我使用odbc作爲數據庫連接,所以數據庫引擎本身並不重要,因爲使用了ODBC。 – TopDeveloper

回答

1

嘗試使用本文中顯示的TableAdapter.Update過程:How to: Update Records in a Database

此外,請確保您不僅擁有對您嘗試連接的數據庫的必要訪問權限,還有權限更新所需表格中的記錄。您可能會遇到阻止更新代碼的SQL Server配置問題。

+0

這個鏈接很好,但我發現更新語句中的問題是我不應該更改主鍵,因爲我在set子句和where子句中都使用它。 – TopDeveloper

0

既然是odbc,你可以用OdbcDataAdapter;然後調用:

adapter.Update(myDS.Tables[TableName]); 

聲明:個人而言,我從來沒有使用DataSet .... ....任何東西。因人而異。

+0

我這樣做了,但數據庫沒有根據新的更新而改變,我的更新不能被寫爲Update Command,因爲數據應該在循環中更新,因爲主鍵(id)也被更新了,我不能使用它在Where子句中。 – TopDeveloper

0

你應該循環

myDS.AcceptChanges(); 
adapter.Update(myDS.Tables[TableName]); 
+0

但適配器在哪裏?正如我在代碼中看到的,OP只使用DataSet。如果適配器不可用,或者可能是內部的? (DataSet可能由Visual Studio自動生成,例如,當將ListBox綁定到新的Data源時)。如果只有DataSet對象可用,數據庫如何保存? – Dexter

相關問題