今回はC#でSQLiteを使った簡単なWindowsFormsアプリケーションを作成してみる。
SQLiteはアプリケーションに組み込んで使う小型のデータベースで、Androidでは標準のAPIで扱えたりするのだが、C#では残念ながら標準のAPIで使うことは出来ない。
そこで、System.Data.SQLiteというライブラリを使うことにする。
このライブラリは以下のサイトから取得できる。
http://sqlite.phxsoftware.com/
このサイトからファイルをダウンロードし、解凍してセットアップするとセットアップフォルダの中にSystem.Data.SQLite.dllというファイルが見つかるだろう。
このライブラリファイルをVisualStudioのソリューション参照設定に追加する。
「ソリューションエクスプローラを右クリック」→「参照の追加」→参照タブを選択→ダウンロードしてきたSystem.Data.SQLite.dllを選択
で出来る。
次に、フォームに以下のようにボタンを配置する。
そして以下のようなコードを書いた。
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> /// Createボタンのイベントハンドラ テーブルの作成とデータ追加 /// </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(); } } /// <summary> /// Selectボタンのイベントハンドラ テーブルの内容を表示 /// </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 (SQLiteCommand cmd = con.CreateCommand()) { con.Open(); cmd.CommandText = "SELECT * FROM Lesson"; using (SQLiteDataReader reader = cmd.ExecuteReader()) { while (reader.Read()) { Console.WriteLine("ID:" + reader[0] + " Name:" + reader[1] + " Age:" + reader[2]); } } } } } }
Createボタンを押すとテーブル作成とデータ追加を行い、Selectボタンを押すとテーブル内容をコンソールに表示するプログラムである。
さて、しかしこのままプログラムを実行しCreateボタンを押すと以下のような例外が出て落ちてしまう。
この問題に対処する方法は2つある。1つめはアプリケーションの対象フレームワークを2.0にする方法である。
VisualStudioのソリューションエクスプローラーから、ソリューションフォルダを右クリックして「プロパティ」を選択し、次にアプリケーションタブを選択する。そして対象のフレームワークコンボボックスで「.NETフレームワーク2.0」を選べばよい。しかしこの方法だとせっかくの.NET4.0の機能が使えなくなってしまう。
もう一つの方法はアプリケーション構成ファイルを追加する方法である。
VisualStudioのソリューションエクスプローラーからソリューションフォルダを右クリックして「新しい項目の追加」を選択し、「アセンブリ構成ファイル」を選択してそのまま追加ボタンを押す。するとApp.configというファイルがソリューションに追加されるだろう。
そうしたら、そのファイルに以下のように記入する。
<?xml version="1.0"?> <configuration> <startup useLegacyV2RuntimeActivationPolicy="true"> <supportedRuntime version="v2.0.50727"/></startup> </configuration>
この後プロジェクトをビルドして実行すれば、先ほどの例外は発生しなくなる。
アプリを実行して「Create」ボタンを押すとアプリの実行フォルダに「sqlitelesson.db」というファイルが生成されるだろう。このファイルがsqliteのデータベースファイルである。その中には「Lesson」という名前のテーブルがあり、3件のデータが追加されている。
次に「Select」ボタンを押すと以下のように表示される。
ID:1 Name:Tom Age:43
ID:2 Name:John Age:29
ID:3 Name:Mike Age:35
参考サイト:
http://msdn.microsoft.com/ja-jp/magazine/ff898405.aspx
ピンバック: 【C#】SQLiteを使う その2 DataGridViewにテーブルの内容を表示する – ザワプロ!