C#でSQLiteのテーブルを作成するコードを紹介します。
SQLiteのインストールとデータベースの作成をしておく必要があります。SQLiteのインストールはこちらの記事を参照してください。また、データベースの作成はこちらの記事を参照してください。
下図のUIを作成します。こちらの記事で作成したフォームにボタンを一つ追加します。このプログラムでは[button2]のみを利用します。
下記のコードを記述します。
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;
namespace SimpleSQLiteDemo
{
public partial class FormMain : Form
{
public FormMain()
{
InitializeComponent();
}
private void button2_Click(object sender, EventArgs e)
{
SQLiteConnection con = new SQLiteConnection("Data Source=mydb.sqlite;Version=3;");
con.Open();
try {
string sql = "create table products (id int, code varchar(8), name varchar(20), price int)";
SQLiteCommand com = new SQLiteCommand(sql, con);
com.ExecuteNonQuery();
}
finally {
con.Close();
}
}
}
}
SQLiteへの接続オブジェクト、SQLiteConnectionオブジェクトを作成します。
SQLiteConnection con = new SQLiteConnection("Data Source=mydb.sqlite;Version=3;");
SQLiteへの接続文字列のフォーマットは下記となります。
作成したSQLiteConnectionオブジェクトの Open()メソッドを呼び出してSQLiteとの接続を開きます。接続はデータベースの利用が終了した場合、確実に閉じる必要があるため、tryブロックを利用し、finally部分にClose()メソッドを記述し、エラーが発生した場合でも確実にデータベースとの接続を閉じるようにします。
con.Open();
try {
string sql = "create table products (id int, code varchar(8), name varchar(20), price int)";
SQLiteCommand com = new SQLiteCommand(sql, con);
com.ExecuteNonQuery();
}
finally {
con.Close();
}
tryブロック内でSQLを実行するコードが下記になります。テーブルの作成はSQLの create table 文を実行して作成します。
CREATE TABLE文についてはこちらの記事を参照してください。
コマンドを実行するためのSQLiteCommandオブジェクトを作成します。コンストラクタの引数に、実行するSQL文とSQLiteの接続オブジェクト(SQLiteConnection)を与えます。
create table文は結果レコードを返さないクエリのため、作成したSQLiteCommandオブジェクトのExecuteNonQuery()メソッドを呼び出してSQL文を実行します。
string sql = "create table products (id int, code varchar(8), name varchar(20), price int)";
SQLiteCommand com = new SQLiteCommand(sql, con);
com.ExecuteNonQuery();
プロジェクトを実行します。下図のウィンドウが表示されます。
[button2]をクリックします。特に画面上では反応はありません。
実行ファイルの配置してあるディレクトリを確認します。データベースファイル"mydb.sqlite"が作成され、ファイルのサイズが大きくなっています。(データベースファイルを作成しただけではサイズは0バイトです。)
もう一度[button2]をクリックすると、すでにテーブルが作成されているため、System.Data.SQLite.SQLiteException
が発生します。
データベースのファイルが作成されていない状態で、[button2]をクリックすると、接続文字列に設定したファイル名で、データベースファイルが作成されテーブルも作成される動作となります。
上記の手順でSQLiteのデータベースにテーブルを作成できました。
例外をキャッチしない場合は、usingを利用するとシンプルにコードを記述できます。
下記のコードを記述します。
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;
namespace SimpleUsingSQLiteDemo
{
public partial class FormMain : Form
{
public FormMain()
{
InitializeComponent();
}
private void button2_Click(object sender, EventArgs e)
{
using (SQLiteConnection con = new SQLiteConnection("Data Source=mydb.sqlite;Version=3;")) {
con.Open();
string sql = "create table products (id int, code varchar(8), name varchar(20), price int)";
SQLiteCommand com = new SQLiteCommand(sql, con);
com.ExecuteNonQuery();
}
}
}
}
SQLiteConnection オブジェクトを作成するコードをusingで囲むことにより、usingのブロックを抜けた際に自動的にSQLiteConnectionをCloseします。また、SQLiteDataReader オブジェクトを取得するコードをusingで囲むことで、SQLiteDataReaderによる読み込みが終了し、usingのブロックを抜けた時点で自動的にSQLiteDataReaderをCloseします。