C#でSQLiteのテーブルを作成するコードを紹介します。
事前準備
SQLiteのインストールとデータベースの作成をしておく必要があります。SQLiteのインストールは
こちらの記事を参照してください。また、データベースの作成は
こちらの記事を参照してください。
プログラム例
UI
下図の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への接続文字列のフォーマットは下記となります。
データベースファイルを利用する場合
Data Source=(SQLiteのデータベースファイル名);Version=3;
UTF16でエンコーディングする場合
Data Source=(SQLiteのデータベースファイル名);Version=3;UseUTF16Encoding=True;
パスワードが必要な場合
Data Source=(SQLiteのデータベースファイル名);Version=3;Password=(パスワード);
メモリDBを利用する場合
Data Source=:memory:;Version=3;
作成した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バイトです。)
補足1
もう一度[button2]をクリックすると、すでにテーブルが作成されているため、
System.Data.SQLite.SQLiteException
が発生します。
補足2
データベースのファイルが作成されていない状態で、[button2]をクリックすると、接続文字列に設定したファイル名で、データベースファイルが作成されテーブルも作成される動作となります。
上記の手順でSQLiteのデータベースにテーブルを作成できました。
補足:usingを利用した記述方法
例外をキャッチしない場合は、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します。
著者
iPentecのメインプログラマー
C#, ASP.NET の開発がメイン、少し前まではDelphiを愛用
最終更新日: 2024-01-07
作成日: 2018-04-24