フッターコンテンツにスキップ
.NETヘルプ

C# SQLite (開発者向けの仕組み)

SQLite の紹介

SQLite は、さまざまなアプリケーションで使用されている、自己完結型、サーバーレス、およびゼロ設定のデータベースエンジンです。デスクトップ、ウェブ、およびモバイルアプリケーションを含みます。 このチュートリアルでは、C# を使って SQLite を利用する方法を掘り下げていきます。 シンプルで理解しやすい例を使って、SQLite データベースの作成、管理、および操作する方法を学びます。

SQLite とは何ですか?

SQLite は、データを単一ファイルに保存する軽量で効率的なデータベースです。従来のデータベースとは異なり、別のサーバーを必要としません。 そのため、完全なデータベースシステムの複雑さなしにデータベースを必要とするアプリケーションにとって優れた選択肢になります。

C#における SQLite のセットアップ

NuGetパッケージマネージャーを使用

C# プロジェクトで SQLite を使用するには、必要な SQLite ライブラリをインストールする必要があります。 これを NuGet パッケージ マネージャーを通じて行うことができます。

  1. Visual Studio を開いて新しいコンソール アプリケーションを作成します。
  2. プロジェクトを右クリックし、「NuGet パッケージの管理」を選択します。
  3. 「SQLite」を検索し、パッケージをインストールします。

接続の確立

接続文字列

接続文字列は、データ ソースに関する情報とそれに接続する手段を指定する文字列です。 SQLite では、接続文字列は次のようになります。

string connectionString = "Data Source=mydatabase.db;";
string connectionString = "Data Source=mydatabase.db;";
Dim connectionString As String = "Data Source=mydatabase.db;"
$vbLabelText   $csharpLabel

接続オブジェクト

System.Data.SQLite 名前空間の SQLiteConnection クラスを使用して接続オブジェクトを作成できます。

using System.Data.SQLite;

// Initialize a connection to the SQLite database
var connection = new SQLiteConnection(connectionString);

// Open the connection
connection.Open();
using System.Data.SQLite;

// Initialize a connection to the SQLite database
var connection = new SQLiteConnection(connectionString);

// Open the connection
connection.Open();
Imports System.Data.SQLite

' Initialize a connection to the SQLite database
Private connection = New SQLiteConnection(connectionString)

' Open the connection
connection.Open()
$vbLabelText   $csharpLabel

テーブルの作成

テーブルの作成

テーブルの作成は、任意のデータベースを操作する場合に基本的なものです。 SQLite コードを使用してテーブルを作成する方法は次のとおりです。

// SQL command to create a new table "person"
string query = "CREATE TABLE IF NOT EXISTS person (id INTEGER PRIMARY KEY, name TEXT)";

// Create a command object with the SQL query and connection
var command = new SQLiteCommand(query, connection);

// Execute the command to create the table
command.ExecuteNonQuery();
// SQL command to create a new table "person"
string query = "CREATE TABLE IF NOT EXISTS person (id INTEGER PRIMARY KEY, name TEXT)";

// Create a command object with the SQL query and connection
var command = new SQLiteCommand(query, connection);

// Execute the command to create the table
command.ExecuteNonQuery();
' SQL command to create a new table "person"
Dim query As String = "CREATE TABLE IF NOT EXISTS person (id INTEGER PRIMARY KEY, name TEXT)"

' Create a command object with the SQL query and connection
Dim command = New SQLiteCommand(query, connection)

' Execute the command to create the table
command.ExecuteNonQuery()
$vbLabelText   $csharpLabel
  • Id Integer Primary Key: 「id」列を プライマリーキーとして設定します。
  • テーブル名: データベーステーブルに付けたい名前。

データを挿入する

行を挿入する

テーブルにデータを挿入するには、INSERT コマンドを使用する必要があります。

// SQL command to insert a new row into the "person" table
string query = "INSERT INTO person (name) VALUES ('John')";
var command = new SQLiteCommand(query, connection);
command.ExecuteNonQuery();
// SQL command to insert a new row into the "person" table
string query = "INSERT INTO person (name) VALUES ('John')";
var command = new SQLiteCommand(query, connection);
command.ExecuteNonQuery();
' SQL command to insert a new row into the "person" table
Dim query As String = "INSERT INTO person (name) VALUES ('John')"
Dim command = New SQLiteCommand(query, connection)
command.ExecuteNonQuery()
$vbLabelText   $csharpLabel

パラメータ化されたコマンド

パラメータ化されたコマンドは、SQL インジェクション攻撃からアプリケーションを保護できます。 このアプローチは、クエリに値を直接挿入するのではなく、パラメータを使用します。

// SQL command with a parameter to insert data safely
string query = "INSERT INTO person (name) VALUES (@name)";
var command = new SQLiteCommand(query, connection);
command.Parameters.AddWithValue("@name", "Iron Developer");
command.ExecuteNonQuery();
// SQL command with a parameter to insert data safely
string query = "INSERT INTO person (name) VALUES (@name)";
var command = new SQLiteCommand(query, connection);
command.Parameters.AddWithValue("@name", "Iron Developer");
command.ExecuteNonQuery();
' SQL command with a parameter to insert data safely
Dim query As String = "INSERT INTO person (name) VALUES (@name)"
Dim command = New SQLiteCommand(query, connection)
command.Parameters.AddWithValue("@name", "Iron Developer")
command.ExecuteNonQuery()
$vbLabelText   $csharpLabel

データの取得

選択ステートメント

データベース テーブルからデータを取得するには、SELECT ステートメントを使用します。

// SQL command to select all rows from the "person" table
string query = "SELECT * FROM person";

var command = new SQLiteCommand(query, connection);
var reader = command.ExecuteReader();

// Loop through the result set and read data
while (reader.Read())
{
    Console.WriteLine(reader["name"]);
}
// SQL command to select all rows from the "person" table
string query = "SELECT * FROM person";

var command = new SQLiteCommand(query, connection);
var reader = command.ExecuteReader();

// Loop through the result set and read data
while (reader.Read())
{
    Console.WriteLine(reader["name"]);
}
' SQL command to select all rows from the "person" table
Dim query As String = "SELECT * FROM person"

Dim command = New SQLiteCommand(query, connection)
Dim reader = command.ExecuteReader()

' Loop through the result set and read data
Do While reader.Read()
	Console.WriteLine(reader("name"))
Loop
$vbLabelText   $csharpLabel

高度な機能

SQLite トランザクション

トランザクションを使用すると、複数の操作を単一のアトミック アクションで実行できます。 トランザクションを使用する方法は次のとおりです。

var transaction = connection.BeginTransaction();
try
{
    // Example of multiple operations in a transaction
    var insertCommand = new SQLiteCommand("INSERT INTO person (name) VALUES ('Alice')", connection, transaction);
    insertCommand.ExecuteNonQuery();

    var updateCommand = new SQLiteCommand("UPDATE person SET name = 'Bob' WHERE name = 'Alice'", connection, transaction);
    updateCommand.ExecuteNonQuery();

    transaction.Commit(); // Commit the transaction if all operations succeed
}
catch
{
    transaction.Rollback(); // Rollback the transaction if any operation fails
}
var transaction = connection.BeginTransaction();
try
{
    // Example of multiple operations in a transaction
    var insertCommand = new SQLiteCommand("INSERT INTO person (name) VALUES ('Alice')", connection, transaction);
    insertCommand.ExecuteNonQuery();

    var updateCommand = new SQLiteCommand("UPDATE person SET name = 'Bob' WHERE name = 'Alice'", connection, transaction);
    updateCommand.ExecuteNonQuery();

    transaction.Commit(); // Commit the transaction if all operations succeed
}
catch
{
    transaction.Rollback(); // Rollback the transaction if any operation fails
}
Dim transaction = connection.BeginTransaction()
Try
	' Example of multiple operations in a transaction
	Dim insertCommand = New SQLiteCommand("INSERT INTO person (name) VALUES ('Alice')", connection, transaction)
	insertCommand.ExecuteNonQuery()

	Dim updateCommand = New SQLiteCommand("UPDATE person SET name = 'Bob' WHERE name = 'Alice'", connection, transaction)
	updateCommand.ExecuteNonQuery()

	transaction.Commit() ' Commit the transaction if all operations succeed
Catch
	transaction.Rollback() ' Rollback the transaction if any operation fails
End Try
$vbLabelText   $csharpLabel

Entity Framework を使用したオブジェクトリレーショナルマッピング(ORM)

Entity Framework (EF) は、.NET エコシステム内で広く使用されている ORM ツールです。 ドメイン固有のオブジェクトを使用してリレーショナル データを操作できるようにすることで、データベース プログラミングを簡素化します。 SQLite と共に Entity Framework を使用する方法は次のとおりです。

1. Entity Framework のインストール

まず、SQLite に特化した Entity Framework NuGet パッケージをインストールしたことを確認してください。

  1. Visual Studio の NuGet パッケージ マネージャーを開きます。
  2. 「Entity Framework SQLite」を検索してインストールします。

2. エンティティ クラスの作成

エンティティ クラスはデータベース テーブルの表現です。 操作したい各テーブルごとにクラスを作成できます。

public class Person
{
    public int Id { get; set; } // Primary Key
    public string Name { get; set; }
}
public class Person
{
    public int Id { get; set; } // Primary Key
    public string Name { get; set; }
}
Public Class Person
	Public Property Id() As Integer ' -  Primary Key
	Public Property Name() As String
End Class
$vbLabelText   $csharpLabel

3. DbContext

データベース セッションを表し、エンティティのインスタンスをクエリおよび保存できる DbContext を継承するクラスを作成する必要があります。 #### 4. CRUD 操作

using Microsoft.EntityFrameworkCore;

public class MyDbContext : DbContext
{
    public DbSet<Person> Persons { get; set; }

    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    {
        optionsBuilder.UseSqlite("Data Source=mydatabase.db;");
    }
}
using Microsoft.EntityFrameworkCore;

public class MyDbContext : DbContext
{
    public DbSet<Person> Persons { get; set; }

    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    {
        optionsBuilder.UseSqlite("Data Source=mydatabase.db;");
    }
}
Imports Microsoft.EntityFrameworkCore

Public Class MyDbContext
	Inherits DbContext

	Public Property Persons() As DbSet(Of Person)

	Protected Overrides Sub OnConfiguring(ByVal optionsBuilder As DbContextOptionsBuilder)
		optionsBuilder.UseSqlite("Data Source=mydatabase.db;")
	End Sub
End Class
$vbLabelText   $csharpLabel

Entity Framework は作成、読み取り、更新、削除(CRUD)の操作を簡素化します。

新しいレコードを挿入する方法は次のとおりです。 Entity Framework を使用すると、レコードの読み取り、更新、削除も同様に簡素で直感的になり、簡潔で保守可能なコードが実現できます。

using (var db = new MyDbContext())
{
    db.Persons.Add(new Person { Name = "John" });
    db.SaveChanges();
}
using (var db = new MyDbContext())
{
    db.Persons.Add(new Person { Name = "John" });
    db.SaveChanges();
}
Using db = New MyDbContext()
	db.Persons.Add(New Person With {.Name = "John"})
	db.SaveChanges()
End Using
$vbLabelText   $csharpLabel

XML ファイルおよびその他のデータプロバイダーの使用

SQLite はリレーショナル データに限定されず、

XML ファイルを含む他のデータ タイプの処理に柔軟性を提供します。 #### 1. XML データの保存

SQLite データベース内に XML データを保存できます。

これにより、構成データや他の階層構造を扱う場合に役立ちます。 #### XML データの取得

string xmlData = "<person><name>John</name></person>";
string query = "INSERT INTO xmltable (data) VALUES (@data)";
var command = new SQLiteCommand(query, connection);
command.Parameters.AddWithValue("@data", xmlData);
command.ExecuteNonQuery();
string xmlData = "<person><name>John</name></person>";
string query = "INSERT INTO xmltable (data) VALUES (@data)";
var command = new SQLiteCommand(query, connection);
command.Parameters.AddWithValue("@data", xmlData);
command.ExecuteNonQuery();
Dim xmlData As String = "<person><name>John</name></person>"
Dim query As String = "INSERT INTO xmltable (data) VALUES (@data)"
Dim command = New SQLiteCommand(query, connection)
command.Parameters.AddWithValue("@data", xmlData)
command.ExecuteNonQuery()
$vbLabelText   $csharpLabel

標準の XML パース技術を使用して、C# で XML データを取得および操作できます。

その他のデータプロバイダーの使用

string query = "SELECT data FROM xmltable WHERE id = 1";
var command = new SQLiteCommand(query, connection);
var reader = command.ExecuteReader();

string xmlData;

// Read the XML data from the query result
if (reader.Read())
{
    xmlData = reader["data"].ToString();
}

// Parse the XML data as needed using an XML parser
string query = "SELECT data FROM xmltable WHERE id = 1";
var command = new SQLiteCommand(query, connection);
var reader = command.ExecuteReader();

string xmlData;

// Read the XML data from the query result
if (reader.Read())
{
    xmlData = reader["data"].ToString();
}

// Parse the XML data as needed using an XML parser
Dim query As String = "SELECT data FROM xmltable WHERE id = 1"
Dim command = New SQLiteCommand(query, connection)
Dim reader = command.ExecuteReader()

Dim xmlData As String

' Read the XML data from the query result
If reader.Read() Then
	xmlData = reader("data").ToString()
End If

' Parse the XML data as needed using an XML parser
$vbLabelText   $csharpLabel

SQLite はさまざまなデータ プロバイダーとうまく統合され、相互運用性と柔軟性を備えています。

これにより、異なるデータベース間をシームレスに切り替えることや、1 つのアプリケーション内でさまざまなデータ ソースを組み合わせることができます。 ## Iron Suit の紹介:強力なライブラリのセット

SQLite の領域と C# の論理演算子を探究した後、.NET 環境での開発体験を補完し向上させる注目すべきツール群を紹介する時が来ました。

Iron Suit は、IronPDF、IronXL、IronOCR、および IronBarcode で構成される強力なライブラリのコレクションで、それぞれが異なる目的を果たします。 IronPDF の包括的ガイド は、C# で PDF ファイルの作成、読み取り、および操作が可能な包括的なライブラリです。

IronPDF:C# PDFライブラリ

レポート、請求書、または PDF 形式のいかなる文書を生成する必要がある場合でも、IronPDF がカバーします。 IronPDF のユニークな機能は、HTML を PDF に変換する能力です。 CSS、JavaScript、および画像を含む HTML を PDF ドキュメントとしてレンダリングでき、強力なツールになります。 IronPDF で HTML を PDF に変換する チュートリアルをチェックして、ステップバイステップのガイドを参照してください。 IronPDF の HTML to PDF 特徴 はその主なハイライトで、すべてのレイアウトとスタイルを保持します。

PDF を Web コンテンツから生成し、レポート、請求書、ドキュメントに最適です。 HTML ファイル、URL、および HTML 文字列を PDF にシームレスに変換できます。 SQLite データベースを扱う場合、IronPDF は不可欠なツールになり得ます。

using IronPdf;

class Program
{
    static void Main(string[] args)
    {
        var renderer = new ChromePdfRenderer();

        // 1. Convert HTML String to PDF
        var htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>";
        var pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent);
        pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf");

        // 2. Convert HTML File to PDF
        var htmlFilePath = "path_to_your_html_file.html"; // Specify the path to your HTML file
        var pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath);
        pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf");

        // 3. Convert URL to PDF
        var url = "http://ironpdf.com"; // Specify the URL
        var pdfFromUrl = renderer.RenderUrlAsPdf(url);
        pdfFromUrl.SaveAs("URLToPDF.pdf");
    }
}
using IronPdf;

class Program
{
    static void Main(string[] args)
    {
        var renderer = new ChromePdfRenderer();

        // 1. Convert HTML String to PDF
        var htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>";
        var pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent);
        pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf");

        // 2. Convert HTML File to PDF
        var htmlFilePath = "path_to_your_html_file.html"; // Specify the path to your HTML file
        var pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath);
        pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf");

        // 3. Convert URL to PDF
        var url = "http://ironpdf.com"; // Specify the URL
        var pdfFromUrl = renderer.RenderUrlAsPdf(url);
        pdfFromUrl.SaveAs("URLToPDF.pdf");
    }
}
Imports IronPdf

Friend Class Program
	Shared Sub Main(ByVal args() As String)
		Dim renderer = New ChromePdfRenderer()

		' 1. Convert HTML String to PDF
		Dim htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>"
		Dim pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent)
		pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf")

		' 2. Convert HTML File to PDF
		Dim htmlFilePath = "path_to_your_html_file.html" ' Specify the path to your HTML file
		Dim pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath)
		pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf")

		' 3. Convert URL to PDF
		Dim url = "http://ironpdf.com" ' Specify the URL
		Dim pdfFromUrl = renderer.RenderUrlAsPdf(url)
		pdfFromUrl.SaveAs("URLToPDF.pdf")
	End Sub
End Class
$vbLabelText   $csharpLabel

SQLite データベースデータから PDF レポートを生成することで、データのプレゼンテーションや共有が円滑になります。 ### IronXL: Excel ファイル管理が簡単に

Excel との統合における IronXL を探求し、開発者が Excel ファイルを読み書き、操作することを容易にします。

XLS、XLSX などに対応しており、スプレッドシート データの処理に最適なツールとなります。 Excel ファイルを読み込み、それらを操作し、また新しいファイルをゼロから作成することもできます。 IronXL の機能は、SQLite を含むデータベース管理とよく統合されており、データのエクスポートとインポートが可能です。 ### IronOCR: C# における光学文字認識

テキスト認識用の IronOCR を使用すると、画像や PDF ファイルからのテキストのスキャンが簡単になります。

さまざまなソースからテキストを認識する多用途な OCR(光学文字認識)ライブラリです。 スキャンしたドキュメントを SQLite データベースに保存し、IronOCR を使用してそのドキュメント内のテキストを取得および認識することを想像してください。

無限の可能性があり、強力なテキスト取得および検索機能を提供します。 ### IronBarcode: 究極のバーコード生成および読み取りライブラリ

IronBarcode を使用した強力なバーコード統合 により、バーコードの生成と読み取りが簡単になります。

複数のバーコードフォーマットをサポートしており、すべてのバーコード関連のニーズに対して堅牢なAPIを提供します。 バーコードが製品または他のデータエンティティを表すアプリケーションで、SQLite を使用する場合、IronBarcode が重要な役割を果たすことができます。 SQLite データベースからバーコードを保存および取得することで、データの整合性が向上し、迅速なアクセスが可能になります。 SQLite は、初学者からプロフェッショナルまで、強力かつ軽量のデータベースエンジンです。テーブルの作成や行の挿入からトランザクションの管理、SQL インジェクション攻撃の防止まで、SQLite は多くの機能を提供します。

結論

コンソールやモバイル アプリケーションを構築する場合でも、外部キーやデータセットを扱う場合でも、SQLite は優れた選択肢です。 IronPDF、IronXL、IronOCR、IronBarcode で構成される Iron Suit は、SQLite データベースやその他のドメインで作業する際に、C# 開発プロジェクトの能力を拡張するツールの宝庫です。

さらに魅力的なのは、これらの製品のそれぞれが Iron Software 製品の無料試用版 を提供しており、それらの機能の豊富さを探求して理解するのに十分な時間を得られることです。これらのツールを使用し続けることを決めたなら、ライセンスは製品ごとに $799 から始まります。

また、2 つの個別製品の価格で完璧な Iron Suit バンドルを購入することもできます。 You can also buy the complete Iron Suit bundle at the price of just two individual products.

よくある質問

NuGet を使用して C# プロジェクトで SQLite をセットアップするには?

NuGet を使用して C# プロジェクトで SQLite をセットアップするには、Visual Studio を開いて新しいコンソール アプリケーションを作成します。NuGet パッケージ マネージャーにアクセスし、「SQLite」を検索してパッケージをインストールします。これにより、プロジェクトに SQLite ライブラリが統合され、データベース操作が可能になります。

C# アプリケーションで SQLite を使用する利点は何ですか?

SQLite は軽量でサーバーレスのデータベース エンジンであり、データを単一ファイルに保存するため、従来のデータベース システムの複雑さなしにシンプルで効率的なデータベース ソリューションが必要なアプリケーションに最適です。

C# で SQLite データベースに接続するにはどうすればよいですか?

C# で SQLite データベースに接続するには、Data Source=mydatabase.db; などの接続文字列を作成し、System.Data.SQLite 名前空間の SQLiteConnection クラスを使用して接続を確立して開きます。

C# を使用して SQLite データベースで CRUD 操作を実行するにはどうすればよいですか?

C# で SQLite データベースに対して CRUD 操作を実行するには、INSERTSELECTUPDATEDELETE などの SQL コマンドを使用します。これらのコマンドは、SQLiteCommand オブジェクトを使用して実行できます。

SQLite でのトランザクションの役割は何ですか?

SQLite でのトランザクションは、複数の操作を単一のアトミック アクションとして実行することを可能にします。connection.BeginTransaction() を使用してトランザクションを開始し、必要に応じて操作を実行し、結果に基づいてトランザクションをコミットまたはロールバックできます。

C# プロジェクトで Entity Framework を使用して SQLite を活用するにはどうすればよいですか?

Entity Framework と SQLite を使用するには、NuGet 経由で必要な Entity Framework パッケージをインストールし、エンティティ クラスを定義し、DbContext クラスを作成します。このセットアップにより、オブジェクト リレーショナル マッピングが可能になり、C# プロジェクトでのデータベース操作が簡略化されます。

C# を使用してデータベース データから PDF ドキュメントを生成するにはどうすればよいですか?

IronPDF を使用すると、C# でデータベース データから HTML を PDF に変換することで PDF ドキュメントを生成できます。これにより、SQLite データベースに保存されたデータから整った PDF レポートを作成できます。

データベース アプリケーションの C# 開発を強化するツールは何ですか?

IronPDF、IronXL、IronOCR、IronBarcode などのツールを含む Iron Suite は、C# データベース アプリケーションの開発を強化し、PDF 作成、Excel ファイル操作、テキスト認識、およびバーコード生成といった機能を提供します。

Curtis Chau
テクニカルライター

Curtis Chauは、カールトン大学でコンピュータサイエンスの学士号を取得し、Node.js、TypeScript、JavaScript、およびReactに精通したフロントエンド開発を専門としています。直感的で美しいユーザーインターフェースを作成することに情熱を持ち、Curtisは現代のフレームワークを用いた開発や、構造の良い視覚的に魅力的なマニュアルの作成を楽しんでいます。

開発以外にも、CurtisはIoT(Internet of Things)への強い関心を持ち、ハードウェアとソフトウェアの統合方法を模索しています。余暇には、ゲームをしたりDiscordボットを作成したりして、技術に対する愛情と創造性を組み合わせています。