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 控制台應用程式中開發、連接和操作 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 Using
using 語句確保連線在超出作用域時被關閉並釋放。 要執行 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 讀取資料
若要從表格中讀取數據,可以使用 ExecuteReader 物件的 SqlCommand 方法,並將 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
若要將資料插入資料庫,可以使用屬性的 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
若要查詢數據,您可以使用 LINQ 方法或表達式對 DbSet 屬性進行操作,並套用篩選器、投影、聚合和其他操作。 查詢將翻譯成 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、桌面、網頁或行動應用程式中創建、連接及操作 SQLite 資料庫。
如何在 C# 中創建和連接到 SQLite 資料庫?
要在 C# 中創建和連接到 SQLite 資料庫,使用 SqliteConnection 類來建立連接。然後您可以執行 SQL 命令,以使用 SqlCommand 物件創建表格並操作資料。
我可以在 .NET 中使用 LINQ 查詢來操作 SQLite 嗎?
可以,您可以在 .NET 中透過使用 Entity Framework Core 來操作 SQLite。這能實現物件關係映射,讓您能夠在 DbContext 類別的 DbSet 屬性上執行 LINQ 查詢。
如何從 SQLite 資料庫資料生成 PDF 報告?
您可以使用 IronPDF 從 SQLite 資料庫資料生成 PDF 報告。通過轉換資料的 HTML 表現形式或直接使用資料庫內容,您能夠創建詳細的 PDF 報告並利用 IronPDF 的渲染功能進行匯出。
如何解決 .NET 應用程式中的常見 SQLite 問題?
可以通過確保 Microsoft.Data.Sqlite 套件的正確安裝,檢查 SQL 語法和驗證連接字串來解決 .NET 應用程式中的常見 SQLite 問題。除錯工具和日誌也能幫助識別和解決錯誤。
如何在 .NET 專案中安裝和使用 PDF 庫?
要在 .NET 專案中安裝如 IronPDF 的 PDF 庫,可在套件管理器控制台中執行 Install-Package IronPDF。安裝後,IronPDF 可讓您使用其豐富的 API 來創建、編輯和閱讀 PDF 文件。
使用 SQLite 搭配 .NET 有哪些優勢?
使用 SQLite 與 .NET 提供了簡單性、無需獨立服務器、跨平台支援和可靠性能等優勢。它非常適合輕量應用程式,並且可以透過 Microsoft.Data.Sqlite 等庫輕鬆整合。



