人気ブログランキング | 話題のタグを見る
(ADO.Net)TableAdapter.Update を使っての新規レコードを追加でハマった
TableAdapter.Update を使えば簡単に新規レコードが追加できるんですが、はまってしまいました。

今までは更新前にDBのテーブルデータを DataTable として取得し、それに新しい DataRow を追加して、TableAdapter.Update(DataTable) を使って更新してたんですが、この方法だとオーバーヘッドが多すぎで効率的じゃありません。
MSDNみてると TableAdapter.Update(DataRow) ってのもあったんで、これだったらいけると思ってコーディングしてみました。
DataSetはこんな感じです。
(ADO.Net)TableAdapter.Update を使っての新規レコードを追加でハマった_e0091163_16525410.jpg

コードはこんな感じです。
DataSet1TableAdapters.ProductsTableAdapter adp = new DataSet1TableAdapters.ProductsTableAdapter();
DataSet1.ProductsDataTable tbl = new DataSet1.ProductsDataTable();
DataSet1.ProductsRow row = tbl.NewProductsRow();
row.ProductID = "aaa";
//テーブル更新
adp.Update(row);

これで実行してみましたが、DBに新規レコードができません。
あれっ?と思って、MSDN:方法 : データベースに新しいレコードを挿入するを眺めていると、DataTable に追加しないとダメなようです。
ということで、下記のようにしてみました。
DataSet1TableAdapters.ProductsTableAdapter adp = new DataSet1TableAdapters.ProductsTableAdapter();
DataSet1.ProductsDataTable tbl = new DataSet1.ProductsDataTable();
DataSet1.ProductsRow row = tbl.NewProductsRow();
row.ProductID = "aaa";
tbl.AddProductsRow(row);
//テーブル更新
adp.Update(row);

空であってもなくてもいったん DataTable にDataRow を追加してからでないと、TableAdapter.Update(DataRow) で更新しても挿入はしてくれないみたいですね。
コンパイルエラーも何も出ないので、気を付けてコーディングしないと見落としそうです。
by jehoshaphat | 2009-06-13 16:53 | .Net開発


<< (MCP70-642)1.3 ... (MCP70-642)1.2 ... >>