初心者でも安心!C#でSQLiteデータベースを操作するチュートリアル
C#でSQLiteデータベースに接続して使用する方法
ADO.NETは、.NET Frameworkに含まれるデータアクセス技術です。SQLite用のADO.NETプロバイダであるSystem.Data.SQLiteを使用することで、C#からSQLiteデータベースに接続してクエリを実行することができます。
手順
- プロジェクトにSystem.Data.SQLite.dllを参照設定する。
- SqlConnectionオブジェクトを作成して、データベースファイルのパスを指定する。
- SqlCommandオブジェクトを作成して、実行したいSQLクエリを記述する。
- SqlCommandオブジェクトのExecuteNonQuery()メソッドまたはExecuteReader()メソッドを実行して、クエリを実行する。
コード例
using System.Data.SQLite;
public static void ConnectAndUseSQLite()
{
// 接続文字列を作成
string connectionString = "Data Source=mydatabase.sqlite";
// SqlConnectionオブジェクトを作成
using (var connection = new SqlConnection(connectionString))
{
// SqlCommandオブジェクトを作成
using (var command = new SqlCommand("SELECT * FROM users", connection))
{
// SqlCommandオブジェクトを開く
connection.Open();
// クエリを実行して結果を取得
using (var reader = command.ExecuteReader())
{
while (reader.Read())
{
// 読み込んだデータを表示
Console.WriteLine($"{reader["id"]}, {reader["name"]}, {reader["email"]}");
}
}
}
}
}
Entity Framework Coreは、.NET Core用のオープンソースのオブジェクト関係マッパー(ORM)です。ORMを使用すると、データベースとの操作をオブジェクト指向で行うことができます。
手順
- プロジェクトにEntity Framework CoreとSQLite用のNuGetパッケージをインストールする。
- データベースモデルを作成する。
- DbContextクラスを作成して、データベースとの接続と操作を定義する。
- DbSetプロパティを使用して、データベースのテーブルとエンティティクラスをマッピングする。
- LINQを使用して、データベースのデータを取得、更新、削除を行う。
コード例
using Microsoft.EntityFrameworkCore;
public class User
{
public int Id { get; set; }
public string Name { get; set; }
public string Email { get; set; }
}
public class MyContext : DbContext
{
public DbSet<User> Users { get; set; }
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder.UseSqlite("Data Source=mydatabase.sqlite");
}
}
public static void ConnectAndUseSQLite()
{
using (var context = new MyContext())
{
// データベースのデータを取得
var users = context.Users.ToList();
// 新しいユーザーを追加
context.Users.Add(new User { Name = "John Doe", Email = "[email protected]" });
// データベースの変更を保存
context.SaveChanges();
}
}
Dapperは、軽量で高速なマイクロORMです。Dapperを使用すると、SQLクエリを直接記述して、データベースのデータを取得、更新、削除を行うことができます。
手順
- プロジェクトにDapperのNuGetパッケージをインストールする。
- DapperのQuery()メソッドまたはExecute()メソッドを使用して、SQLクエリを実行する。
コード例
using Dapper;
public static void ConnectAndUseSQLite()
{
// 接続文字列を作成
string connectionString = "Data Source=mydatabase.sqlite";
// SqlConnectionオブジェクトを作成
using (var connection = new SqlConnection(connectionString))
{
// SQLクエリを実行して結果を取得
var users = connection.Query<User>("SELECT * FROM users");
// 新しいユーザーを追加
connection.Execute("INSERT INTO users (Name, Email) VALUES (@Name, @Email)", new { Name = "John Doe", Email = "[email protected]" });
}
}
- ADO.NETは、最も汎用性の高い方法です。
- Entity Framework Coreは、複雑なデータモデルを扱う場合に適しています。
- Dapperは、軽量で高速な
ADO.NET
using System.Data.SQLite;
public static void ConnectAndUseSQLite()
{
// 接続文字列を作成
string connectionString = "Data Source=mydatabase.sqlite";
// SqlConnectionオブジェクトを作成
using (var connection = new SqlConnection(connectionString))
{
// SqlCommandオブジェクトを作成
using (var command = new SqlCommand("SELECT * FROM users", connection))
{
// SqlCommandオブジェクトを開く
connection.Open();
// クエリを実行して結果を取得
using (var reader = command.ExecuteReader())
{
while (reader.Read())
{
// 読み込んだデータを表示
Console.WriteLine($"{reader["id"]}, {reader["name"]}, {reader["email"]}");
}
}
}
}
}
Entity Framework Core
using Microsoft.EntityFrameworkCore;
public class User
{
public int Id { get; set; }
public string Name { get; set; }
public string Email { get; set; }
}
public class MyContext : DbContext
{
public DbSet<User> Users { get; set; }
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder.UseSqlite("Data Source=mydatabase.sqlite");
}
}
public static void ConnectAndUseSQLite()
{
using (var context = new MyContext())
{
// データベースのデータを取得
var users = context.Users.ToList();
// 新しいユーザーを追加
context.Users.Add(new User { Name = "John Doe", Email = "[email protected]" });
// データベースの変更を保存
context.SaveChanges();
}
}
Dapper
using Dapper;
public static void ConnectAndUseSQLite()
{
// 接続文字列を作成
string connectionString = "Data Source=mydatabase.sqlite";
// SqlConnectionオブジェクトを作成
using (var connection = new SqlConnection(connectionString))
{
// SQLクエリを実行して結果を取得
var users = connection.Query<User>("SELECT * FROM users");
// 新しいユーザーを追加
connection.Execute("INSERT INTO users (Name, Email) VALUES (@Name, @Email)", new { Name = "John Doe", Email = "[email protected]" });
}
}
- 上記のサンプルコードは、基本的な操作のみを説明しています。詳細については、各方法の公式ドキュメントを参照してください。
- SQLiteデータベースを接続するには、SQLiteのdllファイルが必要です。ダウンロード方法は、SQLiteの公式ドキュメントを参照してください。
SQLitePCL.rawは、SQLiteデータベースへのネイティブアクセスを提供する軽量なライブラリです。ADO.NETやEntity Framework Coreなどの他の方法よりも高速で効率的な場合がありますが、コードを書くのが少し複雑になります。
LiteDBは、.NET Frameworkと.NET Coreで使用できるNoSQLデータベースです。SQLiteと同様のファイル形式を使用しますが、JSONドキュメントを保存するなど、いくつかの追加機能を提供します。
RemObjects Data Abstractは、さまざまなデータベースに接続するための抽象化レイヤーを提供する商用ライブラリです。SQLiteを含む多くのデータベースをサポートしており、コードを変更することなくデータベースを切り替えることができます。
どの方法を選択するかは、プロジェクトの要件と開発者のスキルによって異なります。
- 速度とパフォーマンスが重要な場合は、SQLitePCL.rawまたはLiteDBを使用することを検討してください。
- 使いやすさと柔軟性を重視する場合は、ADO.NETまたはEntity Framework Coreを使用することを検討してください。
- さまざまなデータベースに接続する必要がある場合は、RemObjects Data Abstractのような商用ライブラリを使用することを検討してください。
- 上記の方法以外にも、C#からSQLiteデータベースに接続するためのさまざまなライブラリやツールがあります。ニーズに合ったものを見つけるために、インターネットで検索することをお勧めします。
c# sqlite