Sqlite C# .NET (開発者向けの仕組み)
SQLiteは、人気の軽量自己完結型リレーショナルデータベースエンジンです。 .NET開発の文脈では、SQLiteのソースコードは、信頼性の高いデータベースソリューション制御をシステムアプリケーションに統合するための優れた選択肢となります。 この記事では、SQLiteトランザクションの世界を深く掘り下げ、その機能や利点、.NETプロジェクトで効果的に使用する方法を探ります。
SQLiteをC#で使用する方法
- SQLiteライブラリをダウンロード
- データベースを作成してデータを挿入
- リーダーを使用して読み取る
- Entity FrameworkとLINQクエリメソッドを使用してSQLiteを使用します。
- 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
using ステートメントは、接続がスコープ外になったときに、接続が閉じられ、破棄されることを保証します。 SQL コマンドを実行するには、SqlCommand オブジェクトを作成し、それを接続に関連付ける必要があります。 実行する SQL ステートメントに CommandText プロパティを設定し、オプションで Parameters コレクションにパラメータを追加できます。 その後、SqlCommand オブジェクトのメソッドの 1 つ (ExecuteScalar、または 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
テーブルにデータを挿入する
テーブルにデータを挿入するには、同じ 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
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
出力
このコードの出力は:

データをクエリする
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
データベース コンテキストを作成するには、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
データベースにデータを挿入するには、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
データをクエリするには、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
ストックのリストを含むPDFファイルを作成する必要があるシナリオを想定します。 IronPDFを使用することで、それを簡単に実行できます。
IronPDFの紹介
IronPDFは、複数のパッケージを必要とせずに.NETアプリケーションでPDFファイルを作成、編集、読み取るのを助けるライブラリです。 HTML、URL、JavaScript、CSS、さまざまな画像形式から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
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"
ストックリストを含む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 System.Text
Imports Microsoft.EntityFrameworkCore
Dim optionsBuilder As 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 As 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
End Using
builder.Append("</table></body></html>")
Dim renderer As New ChromePdfRenderer()
Dim pdf = renderer.RenderHtmlAsPdf(builder.ToString())
pdf.SaveAs("stock.pdf")
上記のC#コードスニペットは、SQLiteデータベースからストック情報を表示するHTMLテーブルを作成し、その後PDFファイルに変換するように設計されています。データベースとやり取りするためにEntity Framework Coreライブラリを利用します。 最初に、特定の接続文字列で SQLite を使用するように DbContextOptionsBuilder を構成します。 次に、テーブルの外観のために埋め込まれたCSSスタイルを含むHTML文字列を構築し、ヘッダー付きのテーブル構造を作成し、SQLiteデータベースにクエリを実行してストック情報を取得し、取得したデータをHTMLテーブルに挿入し、最終的にChromeベースのPDFレンダラーを使用してHTMLコンテンツを"stock.pdf"という名前のPDFファイルに変換します。結果のPDFには、ストックシンボル、名前、価格を示すテーブルが含まれます。
出力は以下のようになります

結論
結論として、.NETでのデータベース管理のためにSQLiteを活用することは、軽量で多用途のソリューションを提供します。 この記事では、SQLiteを.NETアプリケーションに統合し、その主な機能と利点を紹介しました。 提供されたコードは、.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などのライブラリを使用して簡単に統合できます。




