跳至頁尾內容
開發者更新

Sqlite C# .NET(開發者的工作原理)

SQLite 是一個受歡迎且輕量級的自包含關聯式資料庫引擎,廣泛應用於各種資料存取應用程式和環境平台中。 在 .NET 開發環境中,SQLite 原始碼是將可靠的資料庫解決方案控制整合到您的系統應用程式中的絕佳選擇。 本文將深入探討 SQLite 交易世界,探索其功能、優勢以及如何在 .NET 專案中有效運用。

如何在 C#中使用 SQLite

  1. 下載 SQLite 程式庫
  2. 建立資料庫並插入資料
  3. 使用讀取器進行讀取
  4. 使用 Entity Framework 和 LINQ 查詢方法使用 SQLite
  5. 使用 IronPDF 生成 PDF 報告

什麼是 SQLite?

SQLite 是一個受歡迎的開源資料庫引擎,可以嵌入應用程式中,不需單獨的伺服器元件。 其速度快、可靠,並且跨平台。 透過提供 ADO.NET 介面的各種程式庫,SQLite 可以用於 .NET 專案應用程式。 其中一個程式庫是 Microsoft.Data.SQLite。 這允許您將 SQLite 用作 .NET 應用程式的資料來源,無論是控制台、桌面、網路還是行動應用程式。您也可以使用 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 套件管理器、.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 物件的方法之一來執行命令,比如 ExecuteScalarExecuteReader

在 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 表格中。

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 中讀取資料

要從表格中讀取資料,您可以使用 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
$vbLabelText   $csharpLabel

輸出

此程式碼的輸出為:

Sqlite C# .NET (開發者運作方式): 圖 1 - 輸出

查詢資料

如果您偏好使用 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
$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

要插入資料到資料庫中,您可以使用 AddAddRange 方法的 DbSet 屬性,並傳遞您要插入的物件。 您也可以使用 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();
    }
}
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 語句,並在資料庫上執行。 例如,以下程式碼查詢價格低於六美元的庫存並列印出其名稱:

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 完成該操作。

介紹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
$vbLabelText   $csharpLabel

安裝 IronPDF

要在專案中安裝 IronPDF,請在套件管理器控制台中寫入以下命令。

Install-Package IronPdf

此命令將安裝 IronPDF 及其所有依賴項。

新增授權金鑰

using 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 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")
$vbLabelText   $csharpLabel

上述 C# 程式碼片段設計用來建立一個含有來自 SQLite 資料庫的庫存資訊的 HTML 表,隨後轉換成 PDF 文件。它使用 Entity Framework Core 庫與資料庫互動。 最初,它配置使用特定連接字串的 DbContextOptionsBuilder 來使用 SQLite。 程式碼然後構建一個嵌入 CSS 樣式的 HTML 字串以為表外觀設計外觀,建立表架構帶標題,查詢 SQLite 資料庫以獲取庫存資訊,將檢索到的資料填入 HTML 表,最終,利用基於 Chrome 的 PDF 渲染器將 HTML 內容轉換為名為 "stock.pdf" 的 PDF 文件。生成的 PDF 將包含一個展示股市符號、名稱及價值的表。

輸出為

Sqlite C# .NET (開發者運作方式): 圖 2 - 庫存表格輸出

結論

總之,在 .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介面,允許您在主控台、桌面、Web或移動應用中建立、連接和操作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問題?

可以通過確保正確安裝Microsoft.Data.Sqlite套件,檢查SQL語法,以及驗證連接字串來解決.NET應用程式中的常見SQLite問題。除錯工具和日誌也可以幫助識別和解決錯誤。

我如何在.NET專案中安裝和使用PDF程式庫?

要在.NET專案中安裝像IronPDF這樣的PDF程式庫,請在套件管理器主控台中執行Install-Package IronPdf。安裝完成後,IronPDF允許您利用其廣泛的API來建立、編輯和讀取PDF文件。

將SQLite與.NET結合使用有什麼優勢?

將SQLite與.NET結合使用提供了簡單性、無需單獨伺服器、跨平臺支援以及可靠的性能等優勢。它非常適合輕量級應用,並且可以通過使用像Microsoft.Data.Sqlite這樣的程式庫輕鬆整合。

Jacob Mellor,首席技術官 @ Team Iron
首席技術官

Jacob Mellor是Iron Software的首席技術官,一位在C# PDF技術上開創先河的遠見工程師。作為Iron Software核心程式碼庫的原開發者,他從創立以來就一直在塑造公司的產品架構,與首席執行官Cameron Rimington一起將公司轉變為服務於NASA、特斯拉和全球政府公司的50多名人員的公司。

Jacob擁有曼徹斯特大學的土木工程一等榮譽學士學位(BEng),於1998-2001年之間獲得。在1999年於倫敦創辦他的第一家軟體公司並於2005年建立了他的第一批.NET元組件後,他專注於解決Microsoft生態系統中的複雜問題。

他的旗艦IronPDF和Iron Suite .NET程式庫在全球獲得了超過3000萬次NuGet安裝依據,他的基礎程式碼基繼續支援著世界各地開發者使用的工具。擁有25年的商業經驗和41年的程式設計專業知識,他仍專注於推動企業級C#、Java和Python PDF技術的創新,同時指導下一代技術領導者。

Iron 支援團隊

我們線上24小時,每週5天。
聊天
電子郵件
給我打電話