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

Sqlite C# .NET (開発者向けの仕組み)

SQLiteは、さまざまなデータアクセスアプリケーションや環境プラットフォームで広く使用されている、人気があり、軽量で自己完結型のリレーショナルデータベースエンジンです。 .NET開発の文脈では、SQLiteのソースコードは、信頼性の高いデータベースソリューション制御をシステムアプリケーションに統合するための優れた選択肢となります。 この記事では、SQLiteトランザクションの世界を深く掘り下げ、その機能や利点、.NETプロジェクトで効果的に使用する方法を探ります。

SQLiteをC#で使用する方法

  1. SQLiteライブラリをダウンロード
  2. データベースを作成してデータを挿入
  3. リーダーを使用して読み取る
  4. Entity FrameworkとLINQクエリメソッドを使用してSQLiteを使用
  5. IronPDFを使用してPDFレポートを生成

SQLiteとは何ですか?

SQLiteは、別のサーバーコンポーネントを必要とせずにアプリケーションに組み込むことができる人気のあるオープンソースのデータベースエンジンです。 それは速く、信頼性があり、クロスプラットフォームです。 SQLiteは、ADO.NETインターフェイスを提供するさまざまなライブラリを通じて.NETプロジェクトアプリケーションで使用できます。 これらのライブラリの1つはMicrosoft.Data.SQLiteです。 これにより、コンソール、デスクトップ、ウェブ、モバイルのいずれであっても、.NETアプリケーションのデータソースとしてSQLiteを使用できます。また、Entity Framework Coreを使用してオブジェクトリレーショナルマッピングを行い、LINQを使用してSQLiteデータベースにクエリを実行することもできます。

この記事では、Microsoft.Data.Sqliteを使用して、.NETコンソールアプリケーションでSQLiteデータベースを開発、接続、および操作する方法を示します。 あなたは次のことを学びます:

  • Microsoft.Data.Sqlite NuGetパッケージをインストール
  • SQLite接続を作成し、SQLコマンドを実行
  • データリーダーとパラメーターを使用してテーブルを作成および入力
  • データリーダーを使用してデータをクエリ
  • Entity Framework Coreを実装
  • LINQを使用してデータをクエリ
  • PDFレポートを生成

SQLiteライブラリのインストール

Microsoft.Data.Sqliteを使用するためには、ライブラリとその依存関係を含むNuGetパッケージをインストールする必要があります。 これは、Visual Studioパッケージマネージャーや.NET Core CLI、その他NuGetをサポートする任意のツールを使用して行うことができます。 この記事では、パッケージマネージャーを使用してコンソールアプリケーションを作成し、Microsoft.Data.Sqliteをインストールします。これを行うには、パッケージマネージャーコンソールを開いて次のコマンドを実行します:

Install-Package Microsoft.Data.Sqlite

上記のコマンドは、以下のようにパッケージをインストールします。

SQLiteデータベースの作成

SQLiteデータベースを操作するには、データベースファイルへの接続を表すSqliteConnectionオブジェクトを作成する必要があります。ファイル名や他のオプションは接続文字列で指定できます。 ファイルが存在しない場合、自動的に作成されます。 たとえば、以下のプログラムは、現在のディレクトリにあるemployee.dbという名前のデータベースファイルへの接続を作成します:

using (var connection = new SqliteConnection("Data Source=employee.db"))
{
    connection.Open();
    // ...
}
using (var connection = new SqliteConnection("Data Source=employee.db"))
{
    connection.Open();
    // ...
}
Using connection = New SqliteConnection("Data Source=employee.db")
	connection.Open()
	' ...
End Using
$vbLabelText   $csharpLabel

usingステートメントは、スコープ外に出るときに接続が閉じられ、破棄されることを保証します。 SQLコマンドを実行するには、SqlCommandオブジェクトを作成し、それを接続に関連付ける必要があります。 CommandTextプロパティに実行したいSQLステートメントを設定し、オプションでParametersコレクションにパラメーターを追加できます。 その後、SqlCommandオブジェクトのメソッドを1つ呼び出してコマンドを実行できます。例えば、ExecuteNonQueryExecuteScalar、またはExecuteReaderです。

SQLiteにテーブルを作成する

以下のコードは、ExecuteNonQueryメソッドを使用してEmployeeという名前のテーブルを作成します:

using (var connection = new SqliteConnection("Data Source=employee.db"))
{
    connection.Open();
    var command = connection.CreateCommand();
    command.CommandText = @"CREATE TABLE Employee (
        Id INTEGER PRIMARY KEY,
        FirstName TEXT NOT NULL,
        LastName TEXT NOT NULL,
        Designation TEXT NOT NULL )";
    command.ExecuteNonQuery();
}
using (var connection = new SqliteConnection("Data Source=employee.db"))
{
    connection.Open();
    var command = connection.CreateCommand();
    command.CommandText = @"CREATE TABLE Employee (
        Id INTEGER PRIMARY KEY,
        FirstName TEXT NOT NULL,
        LastName TEXT NOT NULL,
        Designation TEXT NOT NULL )";
    command.ExecuteNonQuery();
}
Using connection = New SqliteConnection("Data Source=employee.db")
	connection.Open()
	Dim command = connection.CreateCommand()
	command.CommandText = "CREATE TABLE Employee (
        Id INTEGER PRIMARY KEY,
        FirstName TEXT NOT NULL,
        LastName TEXT NOT NULL,
        Designation TEXT NOT NULL )"
	command.ExecuteNonQuery()
End Using
$vbLabelText   $csharpLabel

テーブルにデータを挿入する

テーブルにデータを挿入するには、同じSqlCommandオブジェクトを使用してCommandTextプロパティにINSERTステートメントを設定できます。 たとえば、以下のコードはEmployeeテーブルに3つの行を挿入します。

using (var connection = new SqliteConnection("Data Source=employee.db"))
{
    var command = connection.CreateCommand();
    StringBuilder builder = new StringBuilder();
    builder.Append("INSERT INTO Employee VALUES(1, 'John', 'Sami', 'CEO');");
    builder.Append("INSERT INTO Employee VALUES(2, 'David', 'Watson', 'Software Engineer');");
    builder.Append("INSERT INTO Employee VALUES(3, 'Victor', 'Khan', 'Content Writer');");
    connection.Open();
    command.CommandText = builder.ToString();
    command.ExecuteNonQuery();
}
using (var connection = new SqliteConnection("Data Source=employee.db"))
{
    var command = connection.CreateCommand();
    StringBuilder builder = new StringBuilder();
    builder.Append("INSERT INTO Employee VALUES(1, 'John', 'Sami', 'CEO');");
    builder.Append("INSERT INTO Employee VALUES(2, 'David', 'Watson', 'Software Engineer');");
    builder.Append("INSERT INTO Employee VALUES(3, 'Victor', 'Khan', 'Content Writer');");
    connection.Open();
    command.CommandText = builder.ToString();
    command.ExecuteNonQuery();
}
Using connection = New SqliteConnection("Data Source=employee.db")
	Dim command = connection.CreateCommand()
	Dim builder As New StringBuilder()
	builder.Append("INSERT INTO Employee VALUES(1, 'John', 'Sami', 'CEO');")
	builder.Append("INSERT INTO Employee VALUES(2, 'David', 'Watson', 'Software Engineer');")
	builder.Append("INSERT INTO Employee VALUES(3, 'Victor', 'Khan', 'Content Writer');")
	connection.Open()
	command.CommandText = builder.ToString()
	command.ExecuteNonQuery()
End Using
$vbLabelText   $csharpLabel

SQLiteからデータを読み取る

テーブルからデータを読み取るには、SqlCommandオブジェクトのExecuteReaderメソッドを使用し、CommandTextプロパティにSELECTステートメントを設定します。 これにより、行を反復処理し、列名もしくはインデックスで値にアクセスするSqliteDataReaderオブジェクトが返されます。 Readメソッドを使用して次の行に移動し、GetXXXメソッドを使用して適切なデータ型として値を取得できます。 たとえば、以下のコードはEmployeeテーブルからすべての行を読み取ってコンソールに出力します:

using (var connection = new SqliteConnection("Data Source=employee.db"))
{
    var command = connection.CreateCommand();
    command.CommandText = @"SELECT * FROM Employee";
    connection.Open();
    using (var reader = command.ExecuteReader())
    {
        while (reader.Read())
        {
            var id = reader.GetInt32(0);
            string firstName = reader.GetString(1);
            string lastName = reader.GetString(2);
            string designation = reader.GetString(3);
            Console.WriteLine($"{id}: {firstName} - {lastName} - {designation}");
        }
    }
}
using (var connection = new SqliteConnection("Data Source=employee.db"))
{
    var command = connection.CreateCommand();
    command.CommandText = @"SELECT * FROM Employee";
    connection.Open();
    using (var reader = command.ExecuteReader())
    {
        while (reader.Read())
        {
            var id = reader.GetInt32(0);
            string firstName = reader.GetString(1);
            string lastName = reader.GetString(2);
            string designation = reader.GetString(3);
            Console.WriteLine($"{id}: {firstName} - {lastName} - {designation}");
        }
    }
}
Using connection = New SqliteConnection("Data Source=employee.db")
	Dim command = connection.CreateCommand()
	command.CommandText = "SELECT * FROM Employee"
	connection.Open()
	Using reader = command.ExecuteReader()
		Do While reader.Read()
			Dim id = reader.GetInt32(0)
			Dim firstName As String = reader.GetString(1)
			Dim lastName As String = reader.GetString(2)
			Dim designation As String = reader.GetString(3)
			Console.WriteLine($"{id}: {firstName} - {lastName} - {designation}")
		Loop
	End Using
End Using
$vbLabelText   $csharpLabel

出力

このコードの出力は:

Sqlite C# .NET (開発者向けの動作説明): 図1 - 出力

データをクエリする

SQLiteデータベースにクエリを実行する際にLINQを使用したい場合は、Entity Framework Coreを使用してテーブルをクラスにマッピングし、LINQ式を使用してクエリを実行できます。 これを行うには、Microsoft.EntityFrameworkCore.Sqliteパッケージをインストールする必要があります。これはMicrosoft.Data.Sqliteパッケージに依存しています。 DbContextを継承し、データベースコンテキストを表すクラスを作成する必要もあります。 このクラスはDbContextOptionsパラメーターを受け取り、それを基底クラスのコンストラクタに渡すコンストラクタを持たなければなりません。 クラスにマップしたい各テーブルに対してDbSetプロパティも持たなければなりません。 たとえば、次のコードはStockクラスとDatabaseContextクラスを定義しています:

using Microsoft.EntityFrameworkCore;
public class Stock
{
    public int Id { get; set; }
    public string Name { get; set; } = string.Empty;
    public string Symbol { get; set; } = string.Empty;
    public double Price { get; set; }
}
public class DatabaseContext : DbContext
{
    public DatabaseContext(DbContextOptions options) : base(options) { }
    public DbSet<Stock> Stock { get; set; }
}
using Microsoft.EntityFrameworkCore;
public class Stock
{
    public int Id { get; set; }
    public string Name { get; set; } = string.Empty;
    public string Symbol { get; set; } = string.Empty;
    public double Price { get; set; }
}
public class DatabaseContext : DbContext
{
    public DatabaseContext(DbContextOptions options) : base(options) { }
    public DbSet<Stock> Stock { get; set; }
}
Imports Microsoft.EntityFrameworkCore
Public Class Stock
	Public Property Id() As Integer
	Public Property Name() As String = String.Empty
	Public Property Symbol() As String = String.Empty
	Public Property Price() As Double
End Class
Public Class DatabaseContext
	Inherits DbContext

	Public Sub New(ByVal options As DbContextOptions)
		MyBase.New(options)
	End Sub
	Public Property Stock() As DbSet(Of Stock)
End Class
$vbLabelText   $csharpLabel

データベースコンテキストを作成するには、DbContextOptionsBuilderクラスを使用して接続文字列とデータベースプロバイダーを指定する必要があります。 また、Database.EnsureCreatedメソッドを使用して、データベースとテーブルが存在しない場合にそれらを作成することもできます。たとえば、次のコードはデータベースコンテキストとデータベースを作成します:

var optionsBuilder = new DbContextOptionsBuilder<DatabaseContext>();
optionsBuilder.UseSqlite("Data Source=stock.db");
using (var context = new DatabaseContext(optionsBuilder.Options))
{
    context.Database.EnsureCreated();
}
var optionsBuilder = new DbContextOptionsBuilder<DatabaseContext>();
optionsBuilder.UseSqlite("Data Source=stock.db");
using (var context = new DatabaseContext(optionsBuilder.Options))
{
    context.Database.EnsureCreated();
}
Dim optionsBuilder = New DbContextOptionsBuilder(Of DatabaseContext)()
optionsBuilder.UseSqlite("Data Source=stock.db")
Using context = New DatabaseContext(optionsBuilder.Options)
	context.Database.EnsureCreated()
End Using
$vbLabelText   $csharpLabel

データベースにデータを挿入するには、DbSetプロパティのAddまたはAddRangeメソッドを使用し、挿入したいオブジェクトを渡します。 SaveChangesメソッドを使用して、データベースに変更をコミットすることもできます。 たとえば、次のコードはデータベースに3つのストックを挿入します:

static void Main(string[] args)
{
    var optionsBuilder = new DbContextOptionsBuilder<DatabaseContext>();
    optionsBuilder.UseSqlite("Data Source=stock.db");
    using (var context = new DatabaseContext(optionsBuilder.Options))
    {
        context.Database.EnsureCreated();
        var stock = new List<Stock> {
            new Stock { Id = 1, Name = "NCR", Symbol = "$$", Price = 5.6 },
            new Stock { Id = 2, Name = "Google", Symbol = "GG", Price = 10.6 },
            new Stock { Id = 3, Name = "Apple", Symbol = "AA", Price = 3.6 }
        };
        context.AddRange(stock);
        context.SaveChanges();
    }
}
static void Main(string[] args)
{
    var optionsBuilder = new DbContextOptionsBuilder<DatabaseContext>();
    optionsBuilder.UseSqlite("Data Source=stock.db");
    using (var context = new DatabaseContext(optionsBuilder.Options))
    {
        context.Database.EnsureCreated();
        var stock = new List<Stock> {
            new Stock { Id = 1, Name = "NCR", Symbol = "$$", Price = 5.6 },
            new Stock { Id = 2, Name = "Google", Symbol = "GG", Price = 10.6 },
            new Stock { Id = 3, Name = "Apple", Symbol = "AA", Price = 3.6 }
        };
        context.AddRange(stock);
        context.SaveChanges();
    }
}
Shared Sub Main(ByVal args() As String)
	Dim optionsBuilder = New DbContextOptionsBuilder(Of DatabaseContext)()
	optionsBuilder.UseSqlite("Data Source=stock.db")
	Using context = New DatabaseContext(optionsBuilder.Options)
		context.Database.EnsureCreated()
		Dim stock As New List(Of Stock) From {
			New Stock With {
				.Id = 1,
				.Name = "NCR",
				.Symbol = "$$",
				.Price = 5.6
			},
			New Stock With {
				.Id = 2,
				.Name = "Google",
				.Symbol = "GG",
				.Price = 10.6
			},
			New Stock With {
				.Id = 3,
				.Name = "Apple",
				.Symbol = "AA",
				.Price = 3.6
			}
		}
		context.AddRange(stock)
		context.SaveChanges()
	End Using
End Sub
$vbLabelText   $csharpLabel

データをクエリするには、DbSetプロパティに対してLINQメソッドや式を使用し、フィルタリング、射影、集約、およびその他の操作を適用できます。 クエリはSQLステートメントに変換され、データベース上で実行されます。 たとえば、次のコードは価格が6ドル未満の株をクエリし、その名前を出力します:

using (var context = new DatabaseContext(optionsBuilder.Options))
{
    var cheapStocks = context.Stock.Where(p => p.Price < 6).Select(p => p.Name);
    Console.WriteLine("Stock Less than $6 are:");
    foreach (string stock in cheapStocks)
    {
        Console.WriteLine(stock);
    }
}
using (var context = new DatabaseContext(optionsBuilder.Options))
{
    var cheapStocks = context.Stock.Where(p => p.Price < 6).Select(p => p.Name);
    Console.WriteLine("Stock Less than $6 are:");
    foreach (string stock in cheapStocks)
    {
        Console.WriteLine(stock);
    }
}
Using context = New DatabaseContext(optionsBuilder.Options)
	Dim cheapStocks = context.Stock.Where(Function(p) p.Price < 6).Select(Function(p) p.Name)
	Console.WriteLine("Stock Less than $6 are:")
	For Each stock As String In cheapStocks
		Console.WriteLine(stock)
	Next stock
End Using
$vbLabelText   $csharpLabel

ストックのリストを含むPDFファイルを作成する必要があるシナリオを想定します。 IronPDFを使用することで、それを簡単に実行できます。

HTMLからのPDFの生成

IronPDFは、複数のパッケージを必要とせずに.NETアプリケーションでPDFファイルを作成、編集、読み取るのを助けるライブラリです。 HTML、URL、JavaScript、CSS、さまざまな画像形式からPDFを生成し、ヘッダー、フッター、署名、添付ファイル、パスワードを追加することができます。 また、クロスプラットフォームの互換性、マルチスレッド、および非同期のサポートにも対応しています。

IronPDFのHTML to 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

IronPDFをインストールする

プロジェクトにIronPDFをインストールするには、パッケージマネージャーコンソールに次のコマンドを書き込みます。

Install-Package IronPdf

このコマンドは、依存関係を含むすべてのIronPDFをインストールします。

ライセンスキーの追加

IronPDFの使用にはライセンスキーが必要です。 試用ライセンスキーはIronPDF試用ライセンスポージから簡単に取得できます。

アプリケーションの起動時にIronPDFを使用する前に、このコードを追加します。 このアプローチは普遍的に効果的で簡単で、.NET Coreおよび.NET Frameworkアプリケーションの両方に対応しています。

IronPdf.License.LicenseKey = "IRONSUITE.ABC.XYZ.MYCOMPANY.COM.ABC-DEPLOYMENT.TRIAL-P45MXL.TRIAL.EXPIRES.31.JAN.2028";
IronPdf.License.LicenseKey = "IRONSUITE.ABC.XYZ.MYCOMPANY.COM.ABC-DEPLOYMENT.TRIAL-P45MXL.TRIAL.EXPIRES.31.JAN.2028";
IronPdf.License.LicenseKey = "IRONSUITE.ABC.XYZ.MYCOMPANY.COM.ABC-DEPLOYMENT.TRIAL-P45MXL.TRIAL.EXPIRES.31.JAN.2028"
$vbLabelText   $csharpLabel

ストックリストを含むPDFファイルの作成

このC#コードは、SQLiteデータベースに保存されたストックデータからPDFレポートを生成します。 ストック情報で動的にHTMLテーブルを作成し、ChromeベースのPDFレンダラーを使用してテーブルを「stock.pdf」ファイルに変換し、ストック詳細を効率的にレポートし配布します。

var optionsBuilder = new DbContextOptionsBuilder<DatabaseContext>();
optionsBuilder.UseSqlite("Data Source=stock.db");
StringBuilder builder = new StringBuilder();
string style = "<!DOCTYPE html>\r\n<html>\r\n<head>\r\n<style>\r\n#stock {\r\n  font-family: Arial, Helvetica, sans-serif;\r\n  border-collapse: collapse;\r\n  width: 100%;\r\n}\r\n\r\n#stock td, #stock th {\r\n  border: 1px solid #ddd;\r\n  padding: 8px;\r\n}\r\n\r\n#stock tr:nth-child(even){background-color: #f2f2f2;}\r\n\r\n#stock tr:hover {background-color: #ddd;}\r\n\r\n#stock th {\r\n  padding-top: 12px;\r\n  padding-bottom: 12px;\r\n  text-align: left;\r\n  background-color: #04AA6D;\r\n  color: white;\r\n}\r\n</style>\r\n</head>\r\n<body>\r\n\r\n<h1>A Stock Table</h1>";
builder.Append(style);
builder.Append("<table id=\"stock\"><tr><td>Stock Symbol</td><td>Stock Name</td><td>Stock Price</td></tr>");
using (var context = new DatabaseContext(optionsBuilder.Options))
{
    var stocks = context.Stock;
    foreach (Stock stock in stocks)
    {
        builder.Append($"<tr><td>{stock.Symbol}</td><td>{stock.Name}</td><td>{stock.Price}</td></tr>");
    }
}
builder.Append("</table></body></html>");
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf(builder.ToString());
pdf.SaveAs("stock.pdf");
var optionsBuilder = new DbContextOptionsBuilder<DatabaseContext>();
optionsBuilder.UseSqlite("Data Source=stock.db");
StringBuilder builder = new StringBuilder();
string style = "<!DOCTYPE html>\r\n<html>\r\n<head>\r\n<style>\r\n#stock {\r\n  font-family: Arial, Helvetica, sans-serif;\r\n  border-collapse: collapse;\r\n  width: 100%;\r\n}\r\n\r\n#stock td, #stock th {\r\n  border: 1px solid #ddd;\r\n  padding: 8px;\r\n}\r\n\r\n#stock tr:nth-child(even){background-color: #f2f2f2;}\r\n\r\n#stock tr:hover {background-color: #ddd;}\r\n\r\n#stock th {\r\n  padding-top: 12px;\r\n  padding-bottom: 12px;\r\n  text-align: left;\r\n  background-color: #04AA6D;\r\n  color: white;\r\n}\r\n</style>\r\n</head>\r\n<body>\r\n\r\n<h1>A Stock Table</h1>";
builder.Append(style);
builder.Append("<table id=\"stock\"><tr><td>Stock Symbol</td><td>Stock Name</td><td>Stock Price</td></tr>");
using (var context = new DatabaseContext(optionsBuilder.Options))
{
    var stocks = context.Stock;
    foreach (Stock stock in stocks)
    {
        builder.Append($"<tr><td>{stock.Symbol}</td><td>{stock.Name}</td><td>{stock.Price}</td></tr>");
    }
}
builder.Append("</table></body></html>");
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf(builder.ToString());
pdf.SaveAs("stock.pdf");
Imports Microsoft.VisualBasic

Dim optionsBuilder = New DbContextOptionsBuilder(Of DatabaseContext)()
optionsBuilder.UseSqlite("Data Source=stock.db")
Dim builder As New StringBuilder()
Dim style As String = "<!DOCTYPE html>" & vbCrLf & "<html>" & vbCrLf & "<head>" & vbCrLf & "<style>" & vbCrLf & "#stock {" & vbCrLf & "  font-family: Arial, Helvetica, sans-serif;" & vbCrLf & "  border-collapse: collapse;" & vbCrLf & "  width: 100%;" & vbCrLf & "}" & vbCrLf & vbCrLf & "#stock td, #stock th {" & vbCrLf & "  border: 1px solid #ddd;" & vbCrLf & "  padding: 8px;" & vbCrLf & "}" & vbCrLf & vbCrLf & "#stock tr:nth-child(even){background-color: #f2f2f2;}" & vbCrLf & vbCrLf & "#stock tr:hover {background-color: #ddd;}" & vbCrLf & vbCrLf & "#stock th {" & vbCrLf & "  padding-top: 12px;" & vbCrLf & "  padding-bottom: 12px;" & vbCrLf & "  text-align: left;" & vbCrLf & "  background-color: #04AA6D;" & vbCrLf & "  color: white;" & vbCrLf & "}" & vbCrLf & "</style>" & vbCrLf & "</head>" & vbCrLf & "<body>" & vbCrLf & vbCrLf & "<h1>A Stock Table</h1>"
builder.Append(style)
builder.Append("<table id=""stock""><tr><td>Stock Symbol</td><td>Stock Name</td><td>Stock Price</td></tr>")
Using context = New DatabaseContext(optionsBuilder.Options)
	Dim stocks = context.Stock
	For Each stock As Stock In stocks
		builder.Append($"<tr><td>{stock.Symbol}</td><td>{stock.Name}</td><td>{stock.Price}</td></tr>")
	Next stock
End Using
builder.Append("</table></body></html>")
Dim renderer = New ChromePdfRenderer()
Dim pdf = renderer.RenderHtmlAsPdf(builder.ToString())
pdf.SaveAs("stock.pdf")
$vbLabelText   $csharpLabel

上記のC#コードスニペットは、SQLiteデータベースからストック情報を表示するHTMLテーブルを作成し、その後PDFファイルに変換するように設計されています。データベースとやり取りするためにEntity Framework Coreライブラリを利用します。 最初に、特定の接続文字列を持つSQLiteを使用するようDbContextOptionsBuilderを構成します。 次に、テーブルの外観のために埋め込まれたCSSスタイルを含むHTML文字列を構築し、ヘッダー付きのテーブル構造を作成し、SQLiteデータベースにクエリを実行してストック情報を取得し、取得したデータをHTMLテーブルに挿入し、最終的にChromeベースのPDFレンダラーを使用してHTMLコンテンツを「stock.pdf」という名前のPDFファイルに変換します。結果のPDFには、ストックシンボル、名前、価格を示すテーブルが含まれます。

出力 is as

Sqlite C# .NET (開発者向けの動作説明): 図2 - ストックテーブル出力

結論

結論として、.NETでのデータベース管理のためにSQLiteを活用することは、軽量で多用途のソリューションを提供します。 この記事では、.NETアプリケーションへのSQLiteの統合を検討し、その主な機能と利点を紹介しました。 提供されたコードは、.NETコンソールアプリケーションでSQLiteデータベースを作成、接続、および操作するための実用的なステップを示しました。 さらに、効率的なデータ処理のためにMicrosoft.Data.SqliteおよびEntity Framework Coreを使用する方法を強調しました。 IronPDFの組み込みにより、SQLiteデータベースからのPDFレポートをシームレスに生成する方法を示し、アプリケーションの報告力とデータ配布能力を向上させました。

IronPDFは、開発者数、場所、プロジェクト数、および再配布のニーズに応じてさまざまなライセンスオプションを提供しています。 ライセンスは恒久的であり、1年間の無料サポートと更新が含まれています。

よくある質問

SQLiteとは何であり、なぜ.NET開発で人気なのでしょうか?

SQLiteは軽量で自己完結型のリレーショナルデータベースエンジンで、速度、信頼性、クロスプラットフォーム機能のために.NET開発で広く使用されています。別のサーバーコンポーネントを必要とせずにアプリケーションに組み込むことができます。

どのようにしてSQLiteを.NETアプリケーションに統合できますか?

Microsoft.Data.Sqlite NuGetパッケージをインストールすることで、SQLiteを.NETアプリケーションに統合できます。これによりADO.NETインタフェースが提供され、Console、Desktop、Web、またはMobileアプリ内でSQLiteデータベースを作成、接続、および操作することができます。

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

C#でSQLiteデータベースを作成し接続するには、SqliteConnectionクラスを使用して接続を確立します。その後、SqlCommandオブジェクトを使用してテーブルを作成したりデータを操作したりするためのSQLコマンドを実行できます。

SQLiteで.NETでLINQクエリを使用できますか?

はい、Entity Framework Coreを利用することで、SQLiteで.NETでLINQクエリを使用できます。これによりオブジェクトリレーショナルマッピングが可能になり、DbContextクラス内のDbSetプロパティでLINQクエリを実行できます。

どのようにしてSQLiteデータベースのデータからPDFレポートを生成できますか?

IronPDFを使用してSQLiteデータベースのデータからPDFレポートを生成できます。データのHTML表現を変換するか、データベースコンテンツを直接使用して、詳細なPDFレポートを作成し、IronPDFのレンダリング機能を使用してそれらをエクスポートできます。

どのようにして.NETアプリケーションで一般的なSQLiteの問題をトラブルシュートできますか?

.NETアプリケーションでの一般的なSQLiteの問題は、Microsoft.Data.Sqliteパッケージの適切なインストールを確認し、SQL構文と接続文字列を確認することでトラブルシュートできます。デバッグツールとログもエラーを特定し解決するのに役立ちます。

どのようにして.NETプロジェクトにPDFライブラリをインストールおよび使用しますか?

IronPDFのようなPDFライブラリを.NETプロジェクトにインストールするには、Package Manager ConsoleでInstall-Package IronPdfを実行します。インストールすると、IronPDFはその広範なAPIを利用してPDFファイルの作成、編集、読み取りが可能になります。

SQLiteを.NETで使用する利点は何ですか?

.NETと共にSQLiteを使用することは、シンプルさ、別サーバーの必要性がないこと、クロスプラットフォームサポート、信頼性の高いパフォーマンスなどの利点を提供します。軽量アプリケーションに最適で、Microsoft.Data.Sqliteなどのライブラリを使用して簡単に統合できます。

Curtis Chau
テクニカルライター

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

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