はじめに
SQLiteは、軽量でファイルベースのリレーショナルデータベース管理システムです。この記事では、C#を使用してSQLiteデータベースに接続し、データを操作する方法を初心者向けに詳しく解説します。SQLiteは小規模プロジェクトやデスクトップアプリケーション、スマホなどのデバイス内部での使用に特に適しており、そのシンプルさから多くの開発者に支持されています。
SQLiteとは?
SQLiteは、そのコンパクトなサイズと低リソース要求で知られており、外部のサーバー設定を必要とせずにローカルで完全に動作します。データベース全体が単一のファイルに格納されるため、配布やバージョン管理が非常に簡単です。
開始前の準備
SQLiteをC#プロジェクトで使うためには、まずSQLiteを支援するライブラリをプロジェクトに追加する必要があります。最も一般的なライブラリはSystem.Data.SQLite
で、.NETアプリケーションでのSQLiteの使用を可能にします。
System.Data.SQLiteのインストール
- Visual Studioを開く: 既存のプロジェクトを開くか、新しいプロジェクトを作成します。
- NuGetパッケージマネージャーを使用: プロジェクトに右クリックし、「NuGetパッケージの管理」を選択します。
- パッケージを検索してインストール: 「参照」タブで「System.Data.SQLite」を検索し、プロジェクトにインストールします。
SQLiteデータベースへの接続
SQLiteデータベースへの接続は非常に簡単です。接続文字列を使用してSQLiteConnection
オブジェクトを作成し、データベースファイルに接続します。
接続文字列の作成
接続文字列はデータベースファイルのパスを指定するだけです。例えば、プロジェクトのルートにあるデータベースファイルに接続する場合、接続文字列は次のようになります:
string connectionString = "Data Source=mydatabase.db;Version=3;";
この文字列は、mydatabase.db
という名前のデータベースファイルへのパスと、使用するSQLiteのバージョンを指定します。
データベース接続のコード例
using System;
using System.Data.SQLite;
class Program {
static void Main() {
string connectionString = "Data Source=mydatabase.db;Version=3;";
using (var conn = new SQLiteConnection(connectionString)) {
conn.Open();
Console.WriteLine("データベース接続成功!");
}
}
}
このC#コードスニペットは、SQLiteデータベースに接続する基本的な方法を示しています。以下では、コードの各部分について詳しく説明します。
コードの構成
- 名前空間のインポート:
using System;
using System.Data.SQLite;
System
:基本的なシステム関連の機能を提供します。この場合は、Console
クラスが含まれます。System.Data.SQLite
:SQLiteデータベースへのアクセスを可能にする.NETのデータプロバイダです。この名前空間には、SQLiteデータベースに接続するためのクラスとメソッドが含まれています。
- プログラムのエントリーポイント:
class Program {
static void Main() {
// コード本体
}
}
Program
クラスとその中のMain
メソッドは、プログラムの開始点です。C#プログラムでは、Main
メソッドが最初に呼び出されます。
- データベース接続文字列の設定:
string connectionString = "Data Source=mydatabase.db;Version=3;";
- 接続文字列はデータベースファイルのパスを指定します。この例では、
mydatabase.db
という名前のSQLiteデータベースファイルに接続するように設定されています。
- データベースへの接続と状態の確認:
using (var conn = new SQLiteConnection(connectionString)) {
conn.Open();
Console.WriteLine("データベース接続成功!");
}
SQLiteConnection
クラスを使用して、SQLiteデータベースに接続します。ここでは、connectionString
で指定された接続文字列を使用して、データベースに接続しています。using
ステートメントは、SQLiteConnection
のスコープを管理し、ブロックの終了時に接続を自動的に閉じる(Disposeを呼び出す)ことを保証します。conn.Open()
メソッドにより、実際にデータベースへの接続が開かれます。このメソッドが成功すると、”データベース接続成功!”というメッセージがコンソールに表示されます。
データの操作
SQLiteデータベースに接続した後、基本的なSQLクエリを使用してデータを操作することができます。
データの読み取り
using (var cmd = new SQLiteCommand("SELECT * FROM tablename", conn)) {
using (var reader = cmd.ExecuteReader()) {
while (reader.Read()) {
Console.WriteLine(reader["columnname"].ToString());
}
}
}
このC#コードスニペットは、SQLiteデータベースからデータを読み取るための方法を示しています。以下では、コードの各部分について詳しく説明します。
コードの構成
- SQLiteCommandの使用:
using (var cmd = new SQLiteCommand("SELECT * FROM tablename", conn))
SQLiteCommand
オブジェクトは、SQLiteデータベースでSQLクエリを実行するために使用されます。この例では、"SELECT * FROM tablename"
というSQLクエリを実行するためのcmd
オブジェクトを作成しています。conn
は、既に開かれているSQLiteデータベースへの接続を表しています。この接続はSQLiteConnection
オブジェクトを通じて行われます。
- データの読み取り:
using (var reader = cmd.ExecuteReader()) {
while (reader.Read()) {
Console.WriteLine(reader["columnname"].ToString());
}
}
ExecuteReader()
メソッドは、SQLコマンド(ここではSELECT文)の実行結果を取得するために使用されます。このメソッドは、クエリの結果を表すSQLiteDataReader
オブジェクトを返します。SQLiteDataReader
は、データベースから取得したデータに順次アクセスするためのものです。Read()
メソッドを呼び出すと、次の行に移動し、データが存在する場合はtrue
を返します。reader["columnname"]
を使用して、特定の列の値にアクセスします。この場合、各行のcolumnname
列の値がConsole.WriteLine()
を使用してコンソールに出力されます。ToString()
メソッドは、データベースから取得した値を文字列に変換します。
データの追加
using (var cmd = new SQLiteCommand("INSERT INTO tablename (column1, column2) VALUES (value1, value2)", conn)) {
cmd.ExecuteNonQuery();
}
このC#コードスニペットは、SQLiteデータベースに新しいデータを挿入する方法を示しています。以下では、コードの各部分について詳しく説明します。
コードの構成
- SQLiteCommandの使用:
using (var cmd = new SQLiteCommand("INSERT INTO tablename (column1, column2) VALUES (value1, value2)", conn))
SQLiteCommand
オブジェクトは、SQLiteデータベースでSQLクエリを実行するために使用されます。この例では、"INSERT INTO tablename (column1, column2) VALUES (value1, value2)"
というINSERT文を実行するためのcmd
オブジェクトを作成しています。conn
は、既に開かれているSQLiteデータベースへの接続を表しています。この接続はSQLiteConnection
オブジェクトを通じて行われます。
- データの挿入:
cmd.ExecuteNonQuery();
ExecuteNonQuery()
メソッドは、INSERT、UPDATE、DELETEなどのクエリを実行し、影響を受けた行数を返します。このメソッドは、クエリがデータを返さない場合に使用されます。- このコードでは、
cmd
オブジェクトに対してExecuteNonQuery()
メソッドを呼び出しています。これにより、指定されたINSERT文が実行され、新しいデータがSQLiteデータベースのtablename
テーブルに挿入されます。
データの更新と削除
// データの更新
using (var cmd = new SQLiteCommand("UPDATE tablename SET column1 = 'newvalue' WHERE column2 = 'value2'", conn)) {
cmd.ExecuteNonQuery();
}
// データの削除
using (var cmd = new SQLiteCommand("DELETE FROM tablename WHERE column1 = 'value1'", conn)) {
cmd.ExecuteNonQuery();
}
まとめ
この記事では、C#からSQLiteデータベースに接続し、基本的なデータ操作を行う方法を紹介しました。SQLiteはそのシンプルさと軽量さから、多くの小規模アプリケーションや組み込みシステムでの使用に適しています。System.Data.SQLiteライブラリを使うことで、C#アプリケーションから簡単にSQLiteデータベースを操作できるようになります。