2010-09-06 31 views
0

我編寫了一個小型表單,它從數據庫表(SQL CE 3.5)讀取數據並將其顯示在DataGridView控件中。這工作正常。然後我修改它以在顯示數據之前對數據進行更改,這似乎也可以正常工作,但它似乎並未將更改實際提交到數據庫。代碼如下:無法將DataSet更改提交到數據庫

 using (SqlCeConnection conn = new SqlCeConnection(
      Properties.Settings.Default.Form1ConnectionString 
      )) { 

      conn.Open(); 
      using (SqlCeDataAdapter adapter = new SqlCeDataAdapter(
       "SELECT * FROM People", conn 
       )) { 

       //Database update command 
       adapter.UpdateCommand = new SqlCeCommand(
        "UPDATE People SET name = @name " + 
        "WHERE id = @id", conn); 
       adapter.UpdateCommand.Parameters.Add(
        "@name", SqlDbType.NVarChar, 100, "name"); 
       SqlCeParameter idParameter = adapter.UpdateCommand.Parameters.Add(
        "@id", SqlDbType.Int); 
       idParameter.SourceColumn = "id"; 
       idParameter.SourceVersion = DataRowVersion.Original; 

       //Create dataset 
       DataSet myDataSet = new DataSet("myDataSet"); 
       DataTable people = myDataSet.Tables.Add("People"); 

       //Edit dataset 
       adapter.Fill(myDataSet, "People"); 
       people.Rows[0].SetField("name", "New Name!"); 
       adapter.Update(people); 

       //Display the table contents in the form datagridview 
       this.dataGridView1.DataSource=people; 
      } 
     } 

的顯示器,像這樣的形式:

alt text

望着但是通過Visual Studio的服務器資源管理器的表,不顯示任何變化表。

我在做什麼錯?

+0

.update方法沒有錯誤(在粘貼的代碼之外嘗試捕獲是不是隱藏它)? – ktharsis 2010-09-10 13:57:02

+0

@ktharsis - 不,不是 – 2010-09-10 14:23:43

回答

1

我找到了。花了幾天,但我找到了。

Properties.Settings.Default.Form1ConnectionString是「Data Source = | DataDirectory | \ Form1.sdf」。如果替換自動生成的「| DataDirectory |」,更新將起作用與實際的路徑。奇怪的是,從數據庫中讀取數據的方式都是有效的。

0

不應該更新行

adapter.Update(myDataSet, "People") 
+0

Update()被重載,它可以是。這仍然不起作用。 – 2010-09-10 08:32:49

0

我會確保在DataSet認爲它已經改變了。調用DataSet.HasChanges(返回bool)和DataSet.GetChanges,它從原始數據集返回DataSet的增量。

您是否也嘗試過使用Sql Server Express來消除CE數據適配器的任何問題?

+0

如果我不能收回我的賞金,我不如捐出它。至少被懷疑是TableAdapter – 2010-09-13 11:42:17

相關問題