C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[1]: vb データアダプターによる更新


(過去ログ 130 を表示中)

[トピック内 4 記事 (1 - 4 表示)]  << 0 >>

■77222 / inTopicNo.1)  vb データアダプターによる更新
  
□投稿者/ やぎさん (1回)-(2015/09/29(Tue) 10:32:56)

分類:[.NET 全般] 

DataAdapterでデータベースの値を更新する方法についてお教えください。
言語は、Visual Basicです。知りたい内容は、下のURLのコードについてです。 http://qiita.com/keidrumfreak/items/1b631b8935f4c4603f8e

なぜ、この3行でDataGridViewの変更をデータベースに反映させる事ができるんでしょうか?
データベースの内容をdtに格納。dtのデータと、DataGridViewの値をマージさせる事はわかるのですが、これが何故DataGridViewの変更をDBに反映させる事ができるか理解ができないです・・・
解説お願い致します。

da.Fill(dt)
dt.Merge(CType(DataGridView1.DataSource, DataTable))
da.Update(dt)
引用返信 編集キー/
■77224 / inTopicNo.2)  Re[1]: vb データアダプターによる更新
□投稿者/ WebSurfer (657回)-(2015/09/29(Tue) 11:31:00)
No77222 (やぎさん さん) に返信

> これが何故DataGridViewの変更をDBに反映させる事ができるか理解ができないです・・・

ちょっと古い記事ですが、以下のページの図1、図2を見ると一目瞭然で、何故かがよく
分かると思います。

DB 設計者のための明解 ADO.NET 第 1 回
https://msdn.microsoft.com/ja-jp/library/cc482903.aspx
引用返信 編集キー/
■77225 / inTopicNo.3)  Re[1]: vb データアダプターによる更新
□投稿者/ furu (25回)-(2015/09/29(Tue) 11:33:13)
No77222 (やぎさん さん) に返信
> da.Fill(dt)
> dt.Merge(CType(DataGridView1.DataSource, DataTable))
> da.Update(dt)

わからないのはda.Update(dt)でしょうか?

Updateメソッドは、変更を判断して
  INSERTコマンド
  UPDATEコマンド
  DELETEコマンド
をそれぞれ(うまく)実行してくれるそうです。
引用返信 編集キー/
■77226 / inTopicNo.4)  Re[1]: vb データアダプターによる更新
□投稿者/ WebSurfer (658回)-(2015/09/29(Tue) 12:10:21)
No77222 (やぎさん さん) に返信

【追伸】

余計な話かもしれませんが・・・

参考にされてる記事を見てみましたが、内容が変です。参考にしないほうがいいと
思います。

変というのは、例えば:

(1) 「インスタンスでDataAdapter,DataTableを保持せずに」とあるが DataTable
の方は保持している。

(2) DataAdapter を使う場合 Open/Close は不要。何らかの理由(トランザクショ
ンに束ねるなど)で接続を維持したいという場合は Open/Close を書くことがある
が、その記事のコードの例では不要。どうしても自分で Open/Close したいなら
コネクションリークを防止するコーディングとすべき。

(3)「まぁ普通は素直にインスタンスでDataAdapterとConnection保持しろって話に
なるんですが。」とあるが、ユーザーによる DataGridView の編集中に接続を保持
する必要は全くない。むしろその逆で、使い終わったら即 Close すべき。

記事を書かれた方はよく分かってないという感じです。


なお、DataGridView を利用して SQL Server のデータを編集するプログラムを作る
なら Visual Studio の データ ソース構成ウィザードを利用して型付 DataSet +
TableAdapter を自動生成させて、以下の記事の図にあるような構成のプログラムを
作ることをお勧めします。

Windows フォーム アプリケーションでのデータへの接続
https://msdn.microsoft.com/ja-jp/library/wxt2cwcc(v=vs.120).aspx

作り方は以下の記事が参考になると思います。以下の記事は 2 つのテーブルを扱っ
て階層更新を実現するためコードが少々複雑ですが、テーブルが 1 つの場合は自分
では 1 行もコードを書かずにすべてウィザードベースでアプリを作成できます。

10 行でズバリ !! 非接続型のデータ アクセス (ADO.NET) (VB)
https://code.msdn.microsoft.com/10-ADONET-VB-1c64942f/
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -