ADO.NET Entity Frameworkを使ってSQLiteデータベースを作成
C# で SQLite データベースとテーブルを作成する
必要なもの:
- Visual Studio などの開発環境
- .NET Framework 4.5 以降
- SQLite ADO.NET プロバイダ
手順:
-
NuGet パッケージマネージャーを使用して、SQLite ADO.NET プロバイダをプロジェクトにインストールします。
- ソリューションエクスプローラーでプロジェクトを右クリックし、「NuGet パッケージの管理」を選択します。
- 検索ボックスに「System.Data.SQLite」と入力し、検索結果から「System.Data.SQLite.Core」を選択します。
- 「インストール」ボタンをクリックしてインストールします。
-
データベースファイルを作成する
-
接続文字列を作成する
SQLiteConnectionStringBuilder
クラスを使用して、データベースへの接続文字列を作成します。var connectionString = new SQLiteConnectionStringBuilder(); connectionString.DataSource = "database.db";
-
接続を開く
using (var connection = new SQLiteConnection(connectionString.ToString())) { connection.Open(); // データベース操作 }
-
テーブルを作成する
SQLiteCommand
クラスを使用して、CREATE TABLE
ステートメントを実行し、テーブルを作成します。var command = new SQLiteCommand(connection); command.CommandText = @" CREATE TABLE IF NOT EXISTS Users ( Id INTEGER PRIMARY KEY AUTOINCREMENT, Name TEXT NOT NULL, Email TEXT NOT NULL )"; command.ExecuteNonQuery();
-
接続を閉じる
using System;
using System.Data.SQLite;
namespace CreateSQLiteDatabase
{
class Program
{
static void Main(string[] args)
{
// データベースファイル名
const string dbName = "database.db";
// 接続文字列
var connectionString = new SQLiteConnectionStringBuilder();
connectionString.DataSource = dbName;
// データベース接続
using (var connection = new SQLiteConnection(connectionString.ToString()))
{
connection.Open();
// テーブル作成
var command = new SQLiteCommand(connection);
command.CommandText = @"
CREATE TABLE IF NOT EXISTS Users (
Id INTEGER PRIMARY KEY AUTOINCREMENT,
Name TEXT NOT NULL,
Email TEXT NOT NULL
)";
command.ExecuteNonQuery();
Console.WriteLine("テーブル作成成功!");
}
}
}
}
解説
- このコードは、
database.db
という名前の SQLite データベースを作成し、Users
という名前のテーブルを作成します。 Users
テーブルには、Id
、Name
、Email
という 3 つの列があります。Id
列は主キーであり、自動的に増加します。Name
列とEmail
列は、NULL 値を許容しないテキスト型です。
補足
- このコードは基本的な例です。実際のアプリケーションでは、エラー処理やパラメータ化されたクエリなど、より多くの機能を実装する必要があります。
- SQLite に関する詳細は、SQLite の公式ドキュメントを参照してください。
- SQLite データベースを管理するには、SQLite データベースブラウザなどのツールを使用できます。
- Visual Studio には、SQLite データベースを操作するための拡張機能がいくつかあります。
using System;
using System.Data.SQLite;
namespace CreateSQLiteDatabase
{
class Program
{
static void Main(string[] args)
{
// データベースファイル名
const string dbName = "database.db";
// 接続文字列
var connectionString = new SQLiteConnectionStringBuilder();
connectionString.DataSource = dbName;
// データベース接続
using (var connection = new SQLiteConnection(connectionString.ToString()))
{
connection.Open();
// テーブル作成
var command = new SQLiteCommand(connection);
command.CommandText = @"
CREATE TABLE IF NOT EXISTS Users (
Id INTEGER PRIMARY KEY AUTOINCREMENT,
Name TEXT NOT NULL,
Email TEXT NOT NULL
)";
command.ExecuteNonQuery();
// データ挿入
command.CommandText = @"
INSERT INTO Users (Name, Email)
VALUES (@name, @email)";
// パラメータ設定
command.Parameters.AddWithValue("@name", "John Doe");
command.Parameters.AddWithValue("@email", "[email protected]");
// データ挿入実行
command.ExecuteNonQuery();
// データ取得
command.CommandText = "SELECT * FROM Users";
using (var reader = command.ExecuteReader())
{
while (reader.Read())
{
Console.WriteLine("Id: {0}, Name: {1}, Email: {2}", reader["Id"], reader["Name"], reader["Email"]);
}
}
// 接続を閉じる
connection.Close();
}
}
}
}
- このコードは、上記のコードに加えて、データの挿入と取得の例を追加しています。
- データの挿入には、
INSERT INTO
ステートメントを使用します。 - パラメータ化されたクエリを使用して、安全かつ効率的にデータを挿入します。
ExecuteReader
メソッドを使用して、クエリ結果を反復処理します。
実行方法
- Visual Studio で新しい C# コンソールアプリケーションプロジェクトを作成します。
- サンプルコードをプロジェクトに追加します。
- プロジェクトをビルドして実行します。
出力
Id: 1, Name: John Doe, Email: [email protected]
SQLite データベースとテーブルを作成する他の方法
ADO.NET Entity Framework は、オブジェクト指向のデータアクセスのためのフレームワークです。Entity Framework を使用すると、コードを記述することなく、データベースとテーブルを作成できます。
SQLiteOpenHelper クラスは、SQLite データベースとの操作を簡略化するクラスです。SQLiteOpenHelper クラスを使用して、データベースとテーブルを作成できます。
各方法のメリットとデメリット
方法 | メリット | デメリット |
---|---|---|
ADO.NET Entity Framework | コード量が少なく、オブジェクト指向で使いやすい | 設定が複雑になる場合がある |
SQLiteOpenHelper クラス | コード量が少なく、使いやすい | 機能が限定されている |
SQLitePCL.raw | 柔軟性が高い | コード量が多くなり、複雑になる |
- コード量を少なくしたい場合は、ADO.NET Entity Framework または SQLiteOpenHelper クラスを使用するのが良いでしょう。
- 柔軟性が必要な場合は、SQLitePCL.raw を使用するのが良いでしょう。
c# sqlite system.data.sqlite