フッターコンテンツにスキップ
.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ツールです。 ドメイン固有のオブジェクトを使用してリレーショナルデータを操作することにより、データベースプログラミングを簡素化します。 Entity FrameworkをSQLiteと共に使用する方法は次の通りです。

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 ファイルおよびその他のデータプロバイダーの使用

XMLファイルとその他のデータプロバイダとの連携

SQLiteはリレーショナルデータに限定されていません; XMLファイルを含む他のデータタイプの処理にも柔軟性を提供します。

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

XMLデータをSQLiteデータベース内に保存できます。 #### 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はさまざまなデータプロバイダーともうまく統合されており、相互運用性と柔軟性を提供します。 これは、異なるデータベース間をシームレスに切り替えたり、単一のアプリケーション内で異なるデータソースを組み合わせたりできることを意味します。

Ironスーツ紹介:強力なライブラリのセット

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

IronPDF:C# PDFライブラリ

IronPDFの包括的なガイドは、C#でPDFファイルを作成、読み取り、および操作するために設計された包括的なライブラリです。 IronPDF のユニークな機能は、HTML を PDF に変換する能力です。 IronPDFのユニークな機能は、HTMLをPDFに変換する能力です。 IronPDF で HTML を PDF に変換する チュートリアルをチェックして、ステップバイステップのガイドを参照してください。 IronPDF の HTML to PDF 特徴 はその主なハイライトで、すべてのレイアウトとスタイルを保持します。

IronPDFのHTMLからPDF機能がメインのハイライトで、すべてのレイアウトとスタイルを保持します。 ウェブコンテンツからPDFを生成し、レポート、請求書、文書に最適です。 HTMLファイル、URL、およびHTML文字列をシームレスに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");
    }
}
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 ファイルを読み書き、操作することを容易にします。

Excel統合のためのIronXLを探索してください。これにより、開発者はExcelファイルを簡単に読み書きし、操作できます。 Excel ファイルを読み込み、それらを操作し、また新しいファイルをゼロから作成することもできます。 IronXL の機能は、SQLite を含むデータベース管理とよく統合されており、データのエクスポートとインポートが可能です。 ### IronOCR: C# における光学文字認識

IronOCR:C#における光学式文字認識

テキスト認識のためのIronOCRを使用することで、画像やPDFファイルからのテキストスキャンが簡単になります。 スキャンしたドキュメントを SQLite データベースに保存し、IronOCR を使用してそのドキュメント内のテキストを取得および認識することを想像してください。

スキャンした文書をSQLiteデータベースに保存し、IronOCRを使用してそれらの文書内のテキストを取得して認識することを想像してください。 可能性は無限であり、強力なテキスト取得と検索機能を提供します。

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

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

結論

SQLiteは強力でありながら軽量なデータベースエンジンであり、初心者にもプロにも最適です。テーブルの作成、行の挿入からトランザクションの管理、SQLインジェクション攻撃の防止まで、SQLiteは多くの機能を提供します。 コンソールアプリケーションやモバイルアプリケーションを構築しているか、外部キーやデータセットを扱う必要がある場合、SQLiteは優れた選択肢です。

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

さらに魅力的なのは、これらの各製品がIron Software製品の無料トライアルを提供しており、それにより機能の広範囲を探求し理解するための十分な時間を提供します。これらのツールを継続して使用することを決定した場合、ライセンスは$799から始まります。 また、Iron Suitの完全なバンドルは、わずか2つの個別製品の価格で購入することができます。

よくある質問

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 ファイル操作、テキスト認識、およびバーコード生成といった機能を提供します。

Jacob Mellor、Ironチームの最高技術責任者(CTO)
最高技術責任者(CTO)

Jacob Mellorは、Iron Softwareの最高技術責任者であり、C# PDF技術の開拓者としてその先進的な役割を担っています。Iron Softwareのコアコードベースのオリジナルデベロッパーである彼は、創業時から製品のアーキテクチャを形作り、CEOのCameron Rimingtonと協力してNASA、Tesla、全世界の政府機関を含む50人以上の会社に成長させました。

Jacobは、1998年から2001年にかけてマンチェスター大学で土木工学の第一級優等学士号(BEng)を取得しました。1999年にロンドンで最初のソフトウェアビジネスを立ち上げ、2005年には最初の.NETコンポーネントを作成し、Microsoftエコシステムにおける複雑な問題の解決を専門にしました。

彼の旗艦製品であるIronPDFとIronSuite .NETライブラリは、全世界で3000万以上のNuGetインストールを達成しており、彼の基本コードが世界中で使用されている開発者ツールを支えています。商業的な経験を25年間積み、コードを書くことを41年間続けるJacobは、企業向けのC#、Java、およびPython PDF技術の革新を推進し続け、次世代の技術リーダーを指導しています。