【C#】SQLiteを使う その2 DataGridViewにテーブルの内容を表示する

By | 2011年11月7日

前回の記事でC#でSQLiteが使えるようになった。
今回は、さらに進めてDataGridViewにテーブルの内容を表示してみる。
まずアプリの画面構成を示す。

前回のアプリの画面にDataGridViewを配置している。
このDataGridViewにテーブルのデータを表示させる。
コードは以下のようになる。

Form1.cs

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.SQLite;

namespace SqliteLesson
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        /// <summary>
        /// テーブルの作成とデータ追加
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void button1_Click(object sender, EventArgs e)
        {
            using (SQLiteConnection con = new SQLiteConnection("Data Source=sqlitelesson.db"))
            using (SQLiteCommand cmd = con.CreateCommand())
            {
                con.Open();

                // テーブル作成
                cmd.CommandText = "CREATE TABLE Lesson (ID INTEGER PRIMARY KEY, Name NVARCHAR(128), Age INTEGER)";
                cmd.ExecuteNonQuery();

                // データ追加
                cmd.CommandText = "INSERT INTO Lesson (Name,Age) VALUES('Tom',43)";
                cmd.ExecuteNonQuery();

                cmd.CommandText = "INSERT INTO Lesson (Name,Age) VALUES('John',29)";
                cmd.ExecuteNonQuery();

                cmd.CommandText = "INSERT INTO Lesson (Name,Age) VALUES('Mike',35)";
                cmd.ExecuteNonQuery();
            }
        }

        private DataTable dataTable = new DataTable();

        protected override void OnLoad(EventArgs e)
        {
            dataGridView1.DataSource = dataTable;
            base.OnLoad(e);
        }

        /// <summary>
        /// テーブルの内容を表示
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void button2_Click(object sender, EventArgs e)
        {
            using (SQLiteConnection con = new SQLiteConnection("Data Source=sqlitelesson.db"))
            using (SQLiteDataAdapter adapter = new SQLiteDataAdapter("SELECT * FROM Lesson", con))
            {
                adapter.Fill(dataTable);
            }
        }
    }
}

Createボタンの押下処理は前回と変わらない。
変更したのは49行目からである。より少ないコーディングで今回の機能を実現するため、DataTableクラスを使うことにした。
49行目で宣言したDataTableのインスタンスを53行目でDataGridViewのDataSourceに指定している。
62行目から69行目までがSelectボタンの押下処理となり、前回とは大きく異なっている部分である。
DataTableにデータをロードするにはSQLiteDataAdapterを使う。64行目でこのクラスのインスタンスを生成している。
ここでは、コンストラクタに”SELECT * FROM Lesson”というSQLを渡している。こうすることで、Fill()メソッドを呼ぶとLessonテーブルの全データがDataTableにロードされる。データがロードされると、自動的にDataGridViewにもそのデータが表示される。

このように、DataTableを使えばレコード分ループして行を追加してデータをセットする…というようなコードを省くことができる。


コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です