C#からSQLiteのDBを操作する

SQLiteのDBを操作するGUIを作成したい。ということで調べてみた。
System.Data.SQLite.dllとVisual Studio Express 2013 for Windows DesktopのC#を使用して作成してみた。
環境は「Windows 7 32bit」と「.NET Framework 4.5」

1.「System.Data.SQLite.dll」のダウンロード

System.Data.SQLite.dllをサイトからダウンロード、対象の.NET Frameworkのものをダウンロード、ここでは4.5なので4.5のものをダウンロード。インストール版とバイナリ版があるが、バイナリ版をダウンロードする。2種類あったけど、たぶんどっちでもいいと思う。

image029

2.Visual Studioで参照設定する。

「ソリューションエクスプローラ」から「参照設定」からSystem.Data.SQLite.dllを追加する。

image021

image024

3.SQLiteのDBファイルを用意する

ファイル名を「sample.db」とし以下テーブル作成のSQL

CREATE TABLE Sample (
	Id INTEGER PRIMARY KEY AUTOINCREMENT,
	Name TEXT,
	Age INTEGER
)

4.C#でプログラムを作成

SQLiteと接続するために「using System.Data.SQLite;」の文を忘れずに書く。
接続、追加、取得だけの以下のもの作成。

image025

以下ソース

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

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

        // データ接続
        private void button1_Click(object sender, EventArgs e) {
            string dbConnectionString = "Data Source=E:\\sample.db";
            using (SQLiteConnection cn = new SQLiteConnection(dbConnectionString)) {
                try {
                    cn.Open();
                    MessageBox.Show("接続できました。", "タイトル", MessageBoxButtons.OK, MessageBoxIcon.Information);
                } catch (Exception exception) {
                    MessageBox.Show(exception.Message, "タイトル", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }
        }

        // データの追加
        private void button3_Click(object sender, EventArgs e) {
            string dbConnectionString = "Data Source=E:\\sample.db";
            using (SQLiteConnection cn = new SQLiteConnection(dbConnectionString)) {
                cn.Open();
                using (SQLiteTransaction trans = cn.BeginTransaction()) {
                    SQLiteCommand cmd = cn.CreateCommand();

                    // インサート文
                    cmd.CommandText = "INSERT INTO Sample (Name, Age) VALUES (@Name, @Age)";

                    // パラメータのセット
                    cmd.Parameters.Add("Name", System.Data.DbType.String);
                    cmd.Parameters.Add("Age", System.Data.DbType.Int64);

                    // データの追加
                    cmd.Parameters["Name"].Value = "田中";
                    cmd.Parameters["Age"].Value = 25;
                    cmd.ExecuteNonQuery();

                    cmd.Parameters["Name"].Value = "高橋";
                    cmd.Parameters["Age"].Value = 30;
                    cmd.ExecuteNonQuery();

                    // コミット
                    trans.Commit();
                }
            }
        }

        // データの取得
        private void button4_Click(object sender, EventArgs e) {
            string dbConnectionString = "Data Source=E:\\sample.db";
            using (SQLiteConnection cn = new SQLiteConnection(dbConnectionString)) {
                cn.Open();
                SQLiteCommand cmd = cn.CreateCommand();
                cmd.CommandText = "SELECT * FROM Sample";
                using (SQLiteDataReader reader = cmd.ExecuteReader()) {
                    while (reader.Read()) {
                        Debug.WriteLine("名前:" + reader["Name"].ToString());
                        Debug.WriteLine("年齢:" + reader["Age"].ToString());
                    }
                }
                cn.Close();
            }
        }
    }
}

5.実行

「SQLiteに接続」をクリックすると接続完了のメッセージを出力
「データ追加」とクリックするとSampleテーブルにデータを追加する
「データ取得」をクリックして追加されたデータを確認

image001