DataGridView のセルをダブルクリックして編集可能にして、編集後更新ボタンで更新されます。![]()
![]()
![]()
using System;
using System.Data;
using System.Data.Odbc;
using System.Windows.Forms;
namespace MySQL_DataGridView
{
public partial class Form1 : Form
{
// *****************************
// SQL文字列格納用
// *****************************
private string query = "select * from 社員マスタ";
// *****************************
// 接続文字列作成用
// *****************************
private OdbcConnectionStringBuilder builder = new OdbcConnectionStringBuilder();
// *****************************
// コンストラクタ
// *****************************
public Form1()
{
InitializeComponent();
setBuilderData();
}
// *****************************
// 接続文字列の準備
// *****************************
private void setBuilderData()
{
// ドライバ文字列をセット ( 波型括弧{} は必要ありません )
// builder.Driver = "MySQL ODBC 8.0 Unicode Driver";
builder.Driver = "MySQL ODBC 5.3 Unicode Driver";
// 接続用のパラメータを追加
builder.Add("server", "localhost");
builder.Add("database", "lightbox");
builder.Add("uid", "root");
builder.Add("pwd", "");
}
// *****************************
// 参照実行用クリックイベント
// *****************************
private void select_Click(object sender, EventArgs e)
{
loadMySQL();
}
// *****************************
// SELECT 文よりデータ表示
// *****************************
private void loadMySQL()
{
// 接続と実行用のクラス
using (OdbcConnection connection = new OdbcConnection())
using (OdbcCommand command = new OdbcCommand())
{
// 接続文字列
connection.ConnectionString = builder.ConnectionString;
try
{
// 接続文字列を使用して接続
connection.Open();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
return;
}
// コマンドオブジェクトに接続をセット
command.Connection = connection;
// コマンドを通常 SQL用に変更
command.CommandType = CommandType.Text;
// *****************************
// 実行 SQL
// *****************************
command.CommandText = query;
try
{
// レコードセット取得
using (OdbcDataReader reader = command.ExecuteReader())
{
// データを格納するテーブルクラス
DataTable dataTable = new DataTable();
// DataReader よりデータを格納
dataTable.Load(reader);
// 画面の一覧表示用コントロールにセット
dataGridView_Syain.DataSource = dataTable;
// データがあった場合は更新ボタンを使用可能にする
if ( dataTable.Rows.Count != 0 )
{
// 更新ボタン
update.Enabled = true;
}
// リーダを使い終わったので閉じる
reader.Close();
}
}
catch (Exception ex)
{
// 接続解除
connection.Close();
MessageBox.Show(ex.Message);
return;
}
// 接続解除
connection.Close();
}
// カラム幅の自動調整
dataGridView_Syain.AutoResizeColumns();
}
// *****************************
// 更新実行用クリックイベント
// *****************************
private void update_Click(object sender, EventArgs e)
{
using (OdbcConnection connection = new OdbcConnection())
{
// 接続文字列
connection.ConnectionString = builder.ConnectionString;
// 更新を管理するクラス
// ※ 更新するには、テーブルに主キーが必要です
OdbcDataAdapter adapter = new OdbcDataAdapter();
// 参照用のマップを追加
adapter.TableMappings.Add("Table", "社員マスタ");
// 接続とコマンド( コマンドは更新用のレコードを取得した SQL )
adapter.SelectCommand = new OdbcCommand(query, connection);
// 更新用のオブジェクトを準備
OdbcCommandBuilder commandBuilder = new OdbcCommandBuilder(adapter);
// 更新用のコマンドを取得
adapter.UpdateCommand = commandBuilder.GetUpdateCommand();
// 更新用 SQL のベース文字列
Console.WriteLine(adapter.UpdateCommand.CommandText);
// *****************************
// 更新
// *****************************
try
{
// DataGridView の内容を使用して更新
// ※ 他で更新されてしまった行は更新エラーとなります
// ※ 内部で管理された更新予定行を対象として更新します
adapter.Update((DataTable)dataGridView_Syain.DataSource);
MessageBox.Show("更新を終了しました");
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
}
}
}
列定義を自分で作成する場合は以下を参照してください Microsoft Access に対してSQLを入力してその結果を DataGridView に表示する最も簡単なコード
|
|
【C#の最新記事】
- C# : PHP と連携してバイナリデータを WebClient.UploadDataAsync でそのままアップロードする
- C# : WebClient で JSON データを取得後 Json.NET でオブジェクト化( ついでに PropertyInfo でプロパティデータ一覧を foreach で取得 )
- C# : Microsoft Access の接続で、他の RDBMS( ここでは MySQL ) にエクスポートを行う
- C# : TKMP.DLLを使った、Gmail 用メール送信テンプレート
- C# の delegate : メソッドの引数にメソッドを渡して使用する方法と、JavaScript の function(){} と同じ使用方法( 匿名 )
- PowerShell 移行用 C# コンソールアプリのコードテスト( ZIP 圧縮 )
- 解く事が目的では無い、身に付ける事が目的の C# 初心者用の問題を作ったので良かったらどうぞ (4)
- 解く事が目的では無い、身に付ける事が目的の C# 初心者用の問題を作ったので良かったらどうぞ (3)
- 解く事が目的では無い、身に付ける事が目的の C# 初心者用の問題を作ったので良かったらどうぞ (2)
- 解く事が目的では無い、身に付ける事が目的の C# 初心者用の問題を作ったので良かったらどうぞ (1)
- ComboBox : C# : Form アプリケーションで良く使うコントロール / VS2012 にて
- C# バッチビルドキットで、VB の My 名前空間を使ってクリップボードを使ったり、キーボードの SHIFT キーが押されているかを知る
- printui.dll を VB.net または C# から呼び出す/ DllImport で LoadLibraryA / VS2010
- LINQ で List
のソート - VS2010(C#)WPF : ListView 内に GridView を配置する
- Windows ストア用の System.Collections.Generic 名前空間には、SortedList はありません。
- 情報が全くみつからない Microsoft.Live
- VS2010(C#) バッチ(コンソールアプリ) Twitter 投稿
- Windows8(C#) の WebView の LoadComplete で取得した URL 内のアクセストークンを Split で取得
- Facebook C# SDK の 5.4.1.0 のダウンロード




























