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

わんくま同盟

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

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

ツリー一括表示

DataGridViewで更新・追加・削除方法 /2月 (19/01/30(Wed) 23:09) #90015
Re[1]: DataGridViewで更新・追加・削除方法 /WebSurfer (19/01/31(Thu) 06:59) #90017
│└ Re[2]: DataGridViewで更新・追加・削除方法 /2月 (19/01/31(Thu) 14:56) #90030
Re[1]: DataGridViewで更新・追加・削除方法 /WebSurfer (19/01/31(Thu) 12:40) #90027
  └ Re[2]: DataGridViewで更新・追加・削除方法 /2月 (19/01/31(Thu) 14:59) #90031
    └ Re[3]: DataGridViewで更新・追加・削除方法 /WebSurfer (19/01/31(Thu) 16:14) #90033
      └ Re[4]: DataGridViewで更新・追加・削除方法 /2月 (19/02/01(Fri) 13:51) #90050
        └ Re[5]: DataGridViewで更新・追加・削除方法 /WebSurfer (19/02/01(Fri) 13:58) #90051
          └ Re[6]: DataGridViewで更新・追加・削除方法 /2月 (19/02/01(Fri) 14:18) #90052
            ├ Re[7]: DataGridViewで更新・追加・削除方法 /WebSurfer (19/02/01(Fri) 14:38) #90054
            └ Re[7]: DataGridViewで更新・追加・削除方法 /WebSurfer (19/02/01(Fri) 14:45) #90055


親記事 / ▼[ 90017 ] ▼[ 90027 ]
■90015 / 親階層)  DataGridViewで更新・追加・削除方法
□投稿者/ 2月 (1回)-(2019/01/30(Wed) 23:09:53)

分類:[C#] 

WinFormでDataGridViewを使いたいのですが、Update、Deleteについてわかりません。
下記のようにフォームをロード時にデータベースに接続して、データを取り出しデータセットにセット。
そのデータセットをDataGridViewに紐付けるところまでは理解できました。

やりたい事は、DataGridView内のセルの値を変更したり、行を追加したり削除した場合、元のデータベースに情報を反映させる方法がわかりません。
例えば、btnTourokuというボタンを押すことによりDataGridView上で追加・削除・更新された情報をデータベースに接続してデータベースに反映されたいと思います。

こちらのサイトを見ると、DataGridView中で変更、削除された場合は行のステータスがAdded、Modified、Deletedに変更になることはわかりました。
http://okwakatta.net/code/ado09.html
DataGridViewを1行づつ見ていき、Added、Modified、Deletedになっている行があれば、それに対応したSQL文を作成し行毎にSQLを発行していく形になるでしょうか?

宜しくおねがいします!


using System;
using System.Data;
using System.Data.SqlClient;
using System.Windows.Forms;

namespace WindowsApplication1
{
public partial class Form1 : Form
{

public Form1()
{
InitializeComponent();
}

SqlConnection connection = new SqlConnection();
SqlCommand command = new SqlCommand();
DataSet ds = new DataSet();

// 接続文字列を設定します。
connection.ConnectionString = @"Data Source=PC\SQLEXPRESS1;Initial Catalog=TestDatabase;User Id=sa;Password=sa;";

private void Form1_Load(object sender, EventArgs e)
{
using (SqlDataAdapter adapter = new SqlDataAdapter())
{
command.Connection = connection;
command.CommandText = "SELECT * FROM 社員";

adapter.SelectCommand = command;

// SQLを実行し結果をdsの中に格納します。
adapter.Fill(ds);
}
}
}
}
[ □ Tree ] 返信 編集キー/

▲[ 90015 ] / ▼[ 90030 ]
■90017 / 1階層)  Re[1]: DataGridViewで更新・追加・削除方法
□投稿者/ WebSurfer (1733回)-(2019/01/31(Thu) 06:59:53)
No90015 (2月 さん) に返信

開発環境(OS, .NET, Visual Studio, SQL Server のバージョンなど)を書いてください。

Visual Studio に備わっている TableAdaptet 構成ウィザードを利用すれば、自力では一行もコードを書かなくても、SQL Server のテーブルのレコード一覧を DataGridView に表示し、それをユーザーが編集し、編集結果をSQL Server に反映するアプリを作れます。そういうのは考えないのですか?
[ 親 90015 / □ Tree ] 返信 編集キー/

▲[ 90017 ] / 返信無し
■90030 / 2階層)  Re[2]: DataGridViewで更新・追加・削除方法
□投稿者/ 2月 (1回)-(2019/01/31(Thu) 14:56:56)
Win 7,vs 2015, .netframework4.5になります。データベースはmySQLです。TableAdapterを使えば簡単にできるのは学習しましたが、dataadapterを使った方法を学びたくて質問させて頂きました。
[ 親 90015 / □ Tree ] 返信 編集キー/

▲[ 90015 ] / ▼[ 90031 ]
■90027 / 1階層)  Re[1]: DataGridViewで更新・追加・削除方法
□投稿者/ WebSurfer (1736回)-(2019/01/31(Thu) 12:40:41)
No90015 (2月 さん) に返信

上の回答で書いた Visual Studio のウィザードを使う方法を紹介しておきます。

勉強のためとかの理由で、どうしても SqlDataAdapter を使って自力でコードを書きた
いという場合はその旨連絡ください。(それでも、ウィザードが自動生成するコードを
見れば今後の開発の参考になると思いますが・・・)


以下のチュートリアル、

チュートリアル : データベースへのデータの保存 (単一テーブル)
https://docs.microsoft.com/ja-jp/previous-versions/0f92s97z(v=vs.120)

10 行でズバリ !! 非接続型のデータ アクセス (ADO.NET) (C#)
https://code.msdn.microsoft.com/windowsdesktop/10-ADONET-C-cbfe7688

・・・のように Visual Studio のデータソース構成ウィザードを利用して型付 DataSet +
TableAdapter を作って、それを利用してアプリを作ると、以下のページの図のような構造
のアプリが、ほとんど自分でコードを書くこと無しに作れます。

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

操作に慣れると 10 分もかからず作れるはずです。自力で一からコードを書く場合のよう
な種々の問題に悩むことはなくなり、開発工数は激減するはずです。保守工数も減るはず
です。お試しください。
[ 親 90015 / □ Tree ] 返信 編集キー/

▲[ 90027 ] / ▼[ 90033 ]
■90031 / 2階層)  Re[2]: DataGridViewで更新・追加・削除方法
□投稿者/ 2月 (2回)-(2019/01/31(Thu) 14:59:54)
ご提示頂きました方法を一度学習してみたいと思います。有り難うございます❗
[ 親 90015 / □ Tree ] 返信 編集キー/

▲[ 90031 ] / ▼[ 90050 ]
■90033 / 3階層)  Re[3]: DataGridViewで更新・追加・削除方法
□投稿者/ WebSurfer (1737回)-(2019/01/31(Thu) 16:14:48)
No90031 (2月 さん) に返信

> TableAdapterを使えば簡単にできるのは学習しましたが、
> dataadapterを使った方法を学びたくて質問させて頂きました。

> ご提示頂きました方法を一度学習してみたいと思います。

どういうことでしょう?

TableAdapter ウィザードを使って作ってみて、そのコードを参考に自力で SqlDataAdapter を
使ったコードを書いてみるので、それまで回答は不要いうことと理解して良いのでしょうか。
[ 親 90015 / □ Tree ] 返信 編集キー/

▲[ 90033 ] / ▼[ 90051 ]
■90050 / 4階層)  Re[4]: DataGridViewで更新・追加・削除方法
□投稿者/ 2月 (3回)-(2019/02/01(Fri) 13:51:10)
dataadapterを使った方法も是非勉強の為に知りたいです!宜しくおねがいします。
[ 親 90015 / □ Tree ] 返信 編集キー/

▲[ 90050 ] / ▼[ 90052 ]
■90051 / 5階層)  Re[5]: DataGridViewで更新・追加・削除方法
□投稿者/ WebSurfer (1741回)-(2019/02/01(Fri) 13:58:38)
No90050 (2月 さん) に返信

> SqlConnection connection = new SqlConnection();

> Win 7,vs 2015, .netframework4.5になります。データベースはmySQLです。

最初の質問では SqlCOnnection などを使っていたので DB は SQL Server だと思っていたのですが、あと
から書かれた情報では MySQL とのこと。どちらが正しいのですか?
[ 親 90015 / □ Tree ] 返信 編集キー/

▲[ 90051 ] / ▼[ 90054 ] ▼[ 90055 ]
■90052 / 6階層)  Re[6]: DataGridViewで更新・追加・削除方法
□投稿者/ 2月 (4回)-(2019/02/01(Fri) 14:18:36)
利用しているデータベースはMySQLです。

MySQLConnectionと書くべきでした。失礼しました。
[ 親 90015 / □ Tree ] 返信 編集キー/

▲[ 90052 ] / 返信無し
■90054 / 7階層)  Re[7]: DataGridViewで更新・追加・削除方法
□投稿者/ WebSurfer (1742回)-(2019/02/01(Fri) 14:38:17)
No90052 (2月 さん) に返信
> 利用しているデータベースはMySQLです。
>
> MySQLConnectionと書くべきでした。失礼しました。

ということは、一番最初の質問のコードは SQL Server 用ということで、MySQL を使った場合は何もできてない
ということですか?

MySQL 本体はもちろん、Connector/NET, MySQL for Visual Studio などドライバや開発に必要なコンポーネント
はインストールしてあるのでしょうか? もし、まだならそれをまずインストールしてください。話はそれから
です。

もし、インストール済みで Visual Studio から MySQL に接続して開発できるようになっているなら、現在どこ
までできているかコードをアップして(もちろん MySqlConnetion などを使ったもの)説明してください。
[ 親 90015 / □ Tree ] 返信 編集キー/

▲[ 90052 ] / 返信無し
■90055 / 7階層)  Re[7]: DataGridViewで更新・追加・削除方法
□投稿者/ WebSurfer (1743回)-(2019/02/01(Fri) 14:45:02)
No90052 (2月 さん) に返信

最新バージョンでは直っているかもしれませんが、自分が MySQL Installer 5.7.17 を使ってインストール
したものは、Visual Studio のウィザードが使う MySql.Data.dll のバージョン 6.9.8 と、GAC の
MySql.Data.dll のバージョン 6.9.9 に不一致があって、それが原因でウィザードが期待通り動かないこと
がありましたので注意してください。

その場合の対応方法は以下の記事を見てください。

MySQL での TableAdapter 構成ウィザード不具合
http://surferonwww.info/BlogEngine/post/2018/02/10/tableadapter-configuration-wizard-does-not-work-properly-for-mysql.aspx
[ 親 90015 / □ Tree ] 返信 編集キー/


管理者用

- Child Tree -