Job is Tech

エンジニア・デザイナー向けの、お役立ちWEBマガジン

【C#】リストボックスにデータベースから読み込んだデータを表示

概要

 

データベースから読み込んだデータをリストボックスに表示
・リストボックス選択時に表示名ではなく主キーを取得
・リストボックスに表示する項目をテーブルから指定

 

ListBoxで使用するプロパティ

 

DataSource:データベースから取得した情報を格納

// データテーブルを設定
listBox1.DataSource = dataTable;

DisplayMember:選択技として表示する項目

// データベースカラムの"name"を表示
listBox1.DisplayMember = "name";

ValueMember:選択技に対応する値

// 項目選択時に取得したい値
listBox1.ValueMember = "id";

 

ListBoxにデータを表示

 

サンプル例としてMySQLから取得したテーブル情報をリストボックスへと表示します。

    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
      
        private void button1_Click(object sender, EventArgs e)
        {
            // 接続文字列
            String connectionInfo = "Database=jobis;Data Source=localhost;User Id=root;Password=";
            // MySQLとの接続
            MySqlConnection cn = new MySqlConnection(connectionInfo);
            // 接続開始 
            cn.Open();
            // データソースの接続
            MySqlDataAdapter da = new MySqlDataAdapter("SELECT * FROM work",cn);
            // データ格納
            DataTable dt = new DataTable();
            da.Fill(dt);
            //接続終了
            cn.Close();

            // 表示項目と値のセット
            listBox1.DisplayMember = "name";
            listBox1.ValueMember = "id";
            // リストボックスに取得データを設定
            listBox1.DataSource = dt;
        }
    }

※DotaSourceをDisplayMemberより先に設定してしますと一時的に不適切なデータが表示されてしまいます。
※サンプルのデータベースはテスト用のものを用意してください。

検証結果

 
上記のリストボックスの案件Bを選択した時にIDを取得するたにlistBox1にSelectIndexChangeイベントを追加します。
取得はSelectedValueを使うだけなので非常に簡単です。

        private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
            MessageBox.Show(listBox1.SelectedValue.ToString());
        }

 

以上で完了です、データベースから取得したデータの表示とキー情報の取得でした。

 

記事作成:jobis運営製作 未沙貴