C# MySQL・取得データから値を取り出す

C#サンプル プログラムプログラミング
スポンサーリンク
スポンサーリンク

C# データベース・サンプル プログラム一覧

概要説明

sampleテーブルに登録されたデータを取得します。

次に取得したデータから値を取り出し、コンソール出力するサンプルです。

①方法1:MySqlDataReader を使用して値を取得する方法

 レコードを順次取り出す方法です。

 レコードを読んでいる間はデータベースとの接続を閉じることが出来ません。

 ・データベースとのやり取りがレコード事に発生する。

 ・方法2に比べるとメモリの消費は低いかも?

②方法2:MySqlDataAdapter を使用して値を取得する方法

 レコードを全件取得してから処理を行う方法です。

 取得後、データベースとの接続を切断してから処理を行えます。

 ・データベースとのやり取りが1回ですむ。

 ・方法1に比べるとメモリの消費は高いかも?

プログラミング

言語:C#

using MySql.Data.MySqlClient;

/// <summary>
/// button1クリック時処理
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button1_Click(object sender, EventArgs e)
{
    // 動物リスト
    List<string> animalList = new List<string>() { "犬", "猫", "鳥", "猿" };

    // MySQLへの接続情報
    string server = "localhost";
    string database = "test_schema";
    string user = "root";
    string pass = "Develop_000";
    string charset = "utf8";
    string connectionString = string.Format("Server={0};Database={1};Uid={2};Pwd={3};Charset={4}", server, database, user, pass, charset);

    // 接続先データベースを指定する
    MySqlConnection con = new MySqlConnection(connectionString);

    DataTable dt = new DataTable();

    try
    {
        // データベースと接続する
        con.Open();

        // SQLコマンドを宣言する
        MySqlCommand cmd = con.CreateCommand();

        // テーブルを作成する
        cmd.CommandText = " CREATE TABLE IF NOT EXISTS sample " +
                          " (no INT NOT NULL, title VARCHAR(45),PRIMARY KEY(no))";
        cmd.ExecuteNonQuery();

        // データを全て削除する
        cmd.CommandText = "DELETE FROM sample ";
        cmd.ExecuteNonQuery();

        // 動物リストを追加する
        cmd.ExecuteNonQuery();
        for (int i = 0; i < animalList.Count; i++)
        {
            // データを挿入する
            cmd.CommandText = $" INSERT INTO sample VALUES ({i},'{animalList[i]}')";
            cmd.ExecuteNonQuery();
        }

        Console.WriteLine("■ 方法1:MySqlDataReader を使用して値を取得する方法");
        cmd.CommandText = $" SELECT * FROM sample ";
        MySqlDataReader reader = cmd.ExecuteReader();
        while (reader.Read() == true)
        {
            int no = int.Parse(reader["no"].ToString());
            string title = reader["title"].ToString();
            Console.WriteLine((String.Format($"no:{no} title:{title}")));
        }
        reader.Close();

        Console.WriteLine("■ 方法2:MySqlDataAdapter を使用して値を取得する方法");

        // データを全件取得する
        MySqlDataAdapter adapter = new MySqlDataAdapter("SELECT * FROM sample", con);

        // adapterからdtにデータを読み込む
        adapter.Fill(dt);
    }
    finally
    {
        // データベースを切断する
        con.Close();
    }

    // 上記で取得したdtから値を取得する
    foreach (DataRow dr in dt.Rows)
    {
        int no = int.Parse(dr["no"].ToString());
        string title = dr["title"].ToString();
        Console.WriteLine((String.Format($"no:{no} title:{title}")));
    }
}

実行結果

方法1、方法2のどちらも同じ結果が出力されます。

コメント

タイトルとURLをコピーしました