2011-08-11 10 views
1

VS2010データ接続デザインウィザードを使用して、1つのテーブル(database = "UserMetrics" table = "User")でSQLCeデータベースへの接続を定義しました。私はumDataSetが同じであると仮定してい
データセットとテーブルアダプタでSQLCe 3.5に更新が適用されない

 //initialize 
     UserMetricsDataSet umDataSet = new UserMetricsDataSet(); 
     UserMetricsDataSetTableAdapters.UserTableAdapter umTableAdapter = new UserMetricsDataSetTableAdapters.UserTableAdapter(); 

     // check that test data is there and count is correct 
     umTableAdapter.Fill(umDataSet.User); 
     UserMetricsDataSet.UserRow umRow = (UserMetricsDataSet.UserRow)umds.User.Rows[0]; 
     int count = umDataSet.User.Rows.Count; //yep its there 

     //lets add some rows 
     for (int i = 0; i < 100; i++) 
      umDataSet.User.AddUserRow("smith", (float)54, (float)3, 1); 

     umds.User.AcceptChanges(); 
     //umTableAdapter.Update(umDataSet.User); //tried this also ... no change... 

     // there are now 101 rows !! 
     int count = umDataSet.User.Rows.Count; //yep its there 
     umRow = (UserMetricsDataSet.UserRow)umds.User.Rows[101]; 

     //lets double check 
     umTableAdapter.Fill(umDataSet.User); 
     int count = umds.UserMetris.Rows.Count; //huh!!! count==1 ??? 

答えて

1

...我々は更新が保持していないようだかもしれないと試してみてください、私はSOおよびMSDNの記事を進めてきたが、明白な誤りを見ることができません事物はumdsです。

UserMetricsDataSet.UserRow umRow = umDataSet.User.NewRow(); 
umRow["Name"] = "smith"; 
// etc 
umDataSet.User.ImportRow(umRow); 
umDataSet.User.AcceptChanges(); 

注文を元に戻すのはどうですか? TableAdapter.Update()メソッドは、DataTableの変更に基づいて更新をデータベースに返します。変更を最初に受け入れると、各DataTable行でRowStateがリセットされるため、データベースに戻す更新が見つかりません。

MSDNから:

データベースに変更されたデータを送信するために、あなたは、TableAdapterののUpdateメソッドを呼び出します。アダプタのUpdateメソッドは、単一のデータテーブルを更新し、テーブル内の各データ行のRowStateに基づいて正しいコマンド(INSERT、UPDATE、またはDELETE)を実行します。

+0

スペルをキャッチしてくれてありがとう。あなたの "ImportRow"提案は効果がありませんでした。 – Gio

+0

@Gio - 新しいサンプルはどうですか? – nekno

+0

申し訳ありませんが上司が歩いて行きました。ありがとう - それはそれでした! – Gio

関連する問題