SQLiteといえば、オープンソースで軽量なRDBMS(リレーショナルデータベース管理システム)。
サーバーとしてではなく、プログラムに組み込んで動作させることができるます。
データは単一のファイルで管理されるため扱いも簡単なSQLiteの基本的な使い方を解説します。
データベースを開く
SQLiteデーターベースへの接続を開始するには「System.Data.SQLite.SQLiteConnection」クラスを使います。
接続先のデータベースを表す接続文字列(ConnectionString)を指定して利用を開始します。
接続文字列は「Data Source=」の後にSQLiteのデータファイル名を記述する形になります。
(接続文字列を作るためのクラス「SQLiteConnectionStringBuilder」をつかってもよさそうです)
var connectionString = "Data Source=test.db";
using (var connection = new SQLiteConnection(connectionString))
{
connection.Open();
connection.Close();
}
SQLiteConnectionクラスはIDisposableインターフェースを継承していて、使い終わったらDisposeメソッドを呼び出す必要があります。確実にDisposeが呼び出されるようusingを使うことをお勧めします。
SQLiteConnectionオブジェクトが生成できたら、Openメソッドを呼び出すことでデータベースへのアクセスが可能になります。
データーベースを使い終わったらCloseメソッドを呼び出しましょう。DisposeメソッドがよばれればCloseもされるので省略しても良いかもしれませんが、Disposeはusingのスコープから外れる時まで呼ばれないので、使い終わった時点でCloseを呼ぶのがよさそうです。
SQLを発行する
SQL文を実行するには「System.Data.SQLite.SQLiteCommand」クラスを使います。
SQL文とSQLiteConnectionオブジェクトを引数に渡してSQLiteCommandオブジェクトを生成します。
SQLiteCommandクラスもIDisposableインターフェースを継承しているのでusingを使いましょう。
結果を返さないSQLの場合
InsertやUpdateのような結果がないSQL文の場合はExecuteNonQueryメソッドを使います。
var connectionString = "Data Source=test.db";
using (var connection = new SQLiteConnection(connectionString))
{
connection.Open();
var sql = "INSERT INTO test (ID,Data1,Data2) VALUES(1,'001','xxx')";
using (var command = new SQLiteCommand(sql, connection))
{
command.ExecuteNonQuery();
}
connection.Close();
}
結果を返すSQLの場合
Selectのような結果が返ってくるSQL文の場合にはExecuteReaderメソッドを使います。
ExecuteReaderメソッドは戻り値として「System.Data.SQLite.SQLiteDataReader」オブジェクトを返します。
SQLiteDataReaderを操作することでSQLの結果へアクセスします。
var connectionString = "Data Source=test.db";
using (var connection = new SQLiteConnection(connectionString))
{
connection.Open();
var sql = "SELECT * FROM test";
using (var command = new SQLiteCommand(sql, connection))
{
using (var reader = command.ExecuteReader())
{
while (reader.Read())
{
var id = (int)reader["ID"];
var data1 = (string)reader["Data1"];
var data2 = (string)reader["Data2"];
}
reader.Close();
}
}
connection.Close();
}
結果が1つのSQLの場合
レコード数を取得するSQL文などの場合はExecuteScalarメソッドを使う方法もあります。
ExecuteScalarメソッドは結果の先頭行・先頭列の値を戻り値として返します。
var connectionString = "Data Source=test.db";
using (var connection = new SQLiteConnection(connectionString))
{
connection.Open();
var sql = "SELECT COUNT(*) FROM test";
using (var command = new SQLiteCommand(sql, connection))
{
var count = (int)command.ExecuteScalar();
}
connection.Close();
}

コメント
コメントを投稿