Sqlite C# .NET(開發者的工作原理)
SQLite是一種廣受歡迎、輕量且自成一格的關聯式資料庫引擎,廣泛應用於各種資料存取應用程式和環境平台。 在 .NET 開發的背景下,SQLite 原始碼是將可靠的資料庫解決方案控制整合至系統應用程式的絕佳選擇。 本文將深入探討 SQLite 交易的世界,探索其功能、優勢以及如何在您的 .NET 專案中有效使用。
如何在 C# 中使用 SQLite#
1.下載 SQLite 函式庫 2.建立資料庫並插入資料 3.使用閱讀器閱讀 4.使用 Entity Framework 和 LINQ 查詢方法來使用 SQLite 5.使用 IronPDF 產生 PDF 報告
什麼是 SQLite?
SQLite 是一種廣受歡迎的開放原始碼資料庫引擎,可嵌入應用程式中,無需獨立的伺服器元件。 它快速、可靠、跨平台。 SQLite 可透過各種提供 ADO.NET 介面的函式庫與 .NET 專案應用程式搭配使用。 其中一個函式庫是 Microsoft.Data.SQLite。 您可以使用 SQLite 作為 .NET 應用程式的資料來源,不論是 Console、Desktop、Web 或 Mobile。您也可以使用 Entity Framework Core 來執行物件關聯映射,並使用 LINQ 來查詢 SQLite 資料庫。
本文將教您如何使用 Microsoft.Data.Sqlite 在 .NET Console Application 中開發、連結及操作 SQLite 資料庫。 您將學習如何
- 安裝 Microsoft.Data.Sqlite NuGet 套件
- 建立 SQLite 連線並執行 SQL 指令
- 使用資料閱讀器和參數建立和填充表格
- 使用資料閱讀器查詢資料
- 實施 EntityFramework Core
- 使用 LINQ 查詢資料
- 生成 PDF 報告
安裝 SQLite 函式庫
若要使用 Microsoft.Data.Sqlite,您需要安裝包含該函式庫及其相依性的 NuGet 套件。 您可以使用 Visual Studio Package Manager、.NET Core CLI 或任何其他支援 NuGet 的工具來完成。 本文將使用套件管理員建立 Console Application 並安裝 Microsoft.Data.Sqlite。為此,請開啟套件管理員 Console 並執行下列指令:
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 Usingusing 語句可確保連線在超出範圍時會被關閉和處理。 若要執行 SQL 指令,您需要建立 SqlCommand 物件,並將其與連線關聯。 您可以將 CommandText 屬性設定為您要執行的 SQL 語句,並可選擇新增參數至 Parameters 集合。 然後,您可以呼叫 SqlCommand 物件的其中一個方法來執行指令,例如 ExecuteNonQuery, 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 表中插入三行。
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輸出
此程式碼的輸出為

查詢資料
如果您偏好使用 LINQ 來查詢您的 SQLite 資料庫,您可以使用 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 方法將變更提交到資料庫。 例如,以下程式碼會在資料庫中插入三個Stock:
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 檔案,其中包含 Stocks 的清單。 我們可以使用 IronPdf 輕鬆做到這一點。
介紹 IronPDF。
IronPDF 是一個函式庫,可協助您在 .NET 應用程式中建立、編輯和讀取 PDF 檔案,而無需使用多個套件。 它可以從 HTML、URL、JavaScript、CSS 和許多圖片格式產生 PDF,還可以新增頁眉、頁腳、簽名、附件和密碼。 它也支援跨平台相容性、多線程和 async 支援。
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安裝 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 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")上面的 C# 程式碼片段是用來從 SQLite 資料庫中建立 HTML 表格顯示股票資訊,並隨後將其轉換成 PDF 檔案。它使用 Entity Framework Core 函式庫與資料庫互動。 一開始,它會設定 DbContextOptionsBuilder 使用 SQLite 與特定的連接字串。 然後,程式碼會為表格的外觀建構一個內嵌 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 提供多種 授權選項,視開發人員數量、地點、專案和再散佈需求而定。 授權是永久性的,並包含一年的免費支援與更新。
常見問題解答
什麼是 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 指令來建立表格和操作資料。
我可以在 .NET 的 SQLite 中使用 LINQ 查詢嗎?
是的,您可以利用 Entity Framework Core 在 .NET 的 SQLite 中使用 LINQ 查詢。這允許物件關聯映射,讓您可以在 DbContext 類別中的 DbSet 屬性上執行 LINQ 查詢。
如何從 SQLite 資料庫資料產生 PDF 報表?
您可以使用 IronPDF 從 SQLite 資料庫資料產生 PDF 報告。透過轉換資料的 HTML 表示法或直接使用資料庫內容,您可以建立詳細的 PDF 報表,並使用 IronPDF 的渲染功能將其匯出。
如何排除 .NET 應用程式中常見的 SQLite 問題?
.NET 應用程式中常見的 SQLite 問題可以透過確保 Microsoft.Data.Sqlite 套件的正確安裝、檢查 SQL 語法以及驗證連線字串來排除故障。調試工具和日誌也可以幫助識別和解決錯誤。
如何在 .NET 專案中安裝並使用 PDF 函式庫?
要在 .NET 專案中安裝 IronPDF 之類的 PDF 函式庫,請在套件管理員控制台執行 Install-Package IronPdf。安裝之後,IronPDF 可讓您利用其廣泛的 API 來建立、編輯和讀取 PDF 檔案。
在 .NET 中使用 SQLite 有哪些優點?
在 .NET 中使用 SQLite 具備多項優點,例如簡單、無需獨立伺服器、跨平台支援以及可靠的效能。它是輕量級應用程式的理想選擇,並可使用 Microsoft.Data.Sqlite.SQLite 等程式庫輕鬆整合。







