푸터 콘텐츠로 바로가기
.NET 도움말

Sqlite C# .NET (개발자를 위한 작동 원리)

SQLite는 다양한 데이터 접근 응용 프로그램과 환경 플랫폼에서 널리 사용되는 인기 있고 가벼우며 독립형 관계형 데이터베이스 엔진입니다. .NET 개발 컨텍스트에서는 SQLite 소스 코드를 통해 시스템 응용 프로그램에 신뢰할 수 있는 데이터베이스 솔루션 제어를 통합하기 위한 우수한 선택지입니다. 이 기사는 SQLite 거래의 세계를 탐구하며, 그 기능, 이점 및 .NET 프로젝트에 효과적으로 사용하는 방법을 탐구할 것입니다.

C#에서 SQLite 사용 방법

  1. SQLite 라이브러리 다운로드
  2. 데이터베이스 생성 및 데이터 삽입
  3. 리더를 사용하여 읽기
  4. SQLite를 엔터티 프레임워크 및 LINQ 쿼리 방법으로 사용
  5. IronPDF를 사용하여 PDF 보고서 생성

SQLite란?

SQLite는 별도 서버 구성 요소 없이 응용 프로그램에 내장할 수 있는 인기 있는 오픈 소스 데이터베이스 엔진입니다. 빠르고, 신뢰할 수 있으며, 크로스 플랫폼입니다. SQLite는 ADO.NET 인터페이스를 제공하는 다양한 라이브러리를 통해 .NET 프로젝트 응용 프로그램에서 사용할 수 있습니다. 이러한 라이브러리 중 하나는 Microsoft.Data.SQLite입니다. 이를 통해 Console, Desktop, Web 또는 Mobile과 같은 .NET 응용 프로그램의 데이터 소스로 SQLite를 사용할 수 있습니다. 또한 엔터티 프레임워크 코어를 사용하여 객체-관계 매핑을 수행하고 LINQ를 사용하여 SQLite 데이터베이스를 쿼리할 수 있습니다.

이 글은 .NET 콘솔 애플리케이션에서 SQLite 데이터베이스를 개발, 연결 및 조작하기 위해 Microsoft.Data.Sqlite를 사용하는 방법을 보여줍니다. 다음을 배우게 됩니다:

  • Microsoft.Data.Sqlite NuGet Install-Package
  • SQLite 연결 생성 및 SQL 명령 실행
  • 데이터 리더 및 매개변수를 사용하여 테이블 생성 및 채우기
  • 데이터 리더를 사용해 데이터 쿼리
  • 엔터티 프레임워크 코어 구현
  • 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 객체를 만들고 이를 연결에 연결해야 합니다. 실행할 SQL 문을 CommandText 속성에 설정할 수 있으며, 옵션으로 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
$vbLabelText   $csharpLabel

데이터를 테이블에 삽입

테이블에 데이터를 삽입하려면 동일한 SqlCommand 객체를 사용하고 INSERT 문을 CommandText 속성에 설정할 수 있습니다. 예를 들어, 아래 코드는 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에서 데이터 읽기

테이블의 데이터를 읽으려면 SqlCommand 객체의 ExecuteReader 메소드를 사용하고 SELECT 문을 CommandText 속성에 설정할 수 있습니다. 이는 행을 반복하고 열 이름 또는 인덱스로 값을 액세스할 수 있는 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를 사용하고 싶다면 테이블을 클래스에 매핑하고 LINQ 표현식을 사용하여 쿼리를 수행하기 위해 Entity Framework Core를 사용할 수 있습니다. 이 작업을 하려면 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 메소드를 사용할 수 있습니다. 예를 들어, 다음 코드는 데이터베이스에 세 개의 주식을 삽입합니다:

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를 사용하면 쉽게 할 수 있습니다.

IronPDF 소개합니다

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 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 라이브러리를 사용합니다. 초기 설정으로 특정 연결 문자열을 사용하여 SQLite를 사용하도록 DbContextOptionsBuilder을 구성합니다. 그런 다음 표 외양을 위한 내장 CSS 스타일로 HTML 문자열을 구성하고, 헤더가 있는 표 구조를 생성하고, 주식 정보를 위해 SQLite 데이터베이스에 쿼리를 만들고, 검색된 데이터로 HTML 테이블을 채우고 마지막으로 HTML 내용을 "stock.pdf"라는 파일로 변환하기 위해 Chrome 기반 PDF 렌더러를 사용합니다. 결과 PDF에는 주식 심볼, 이름, 가격을 나타내는 표가 포함됩니다.

출력은 다음과 같습니다

Sqlite C# .NET (개발자를 위한 동작 방식): 그림 2 - 스톡 테이블 출력

결론

결론적으로, .NET에서 SQLite를 사용한 데이터베이스 관리는 경량이고 다재다능한 솔루션을 제공합니다. .NET 응용 프로그램에 SQLite를 통합하는 방법을 탐색하면서 SQLite의 주요 기능과 장점을 소개했습니다. 제공된 코드는 .NET 콘솔 응용 프로그램에서 SQLite 데이터베이스를 생성, 연결 및 조작하기 위한 실용적인 단계를 보여주었습니다. 또한 효율적인 데이터 처리를 위해 Microsoft.Data.Sqlite 및 Entity Framework Core 사용을 강조했습니다. SQLite 데이터베이스에서 PDF 보고서를 생성하는 방법을 통해 IronPDF 도입은 응용 프로그램의 보고 및 데이터 배포 기능을 강화하는 방법을 보여주었습니다.

IronPDF는 개발자 수, 위치, 프로젝트 및 재배포 요구에 따라 다양한 라이선싱 옵션을 제공합니다. 라이선스는 영구적이며 1년의 무료 지원 및 업데이트를 포함합니다.

자주 묻는 질문

SQLite란 무엇이며 .NET 개발에서 인기가 있는 이유는 무엇인가요?

SQLite는 경량의 자체 포함형 관계형 데이터베이스 엔진으로, 속도, 신뢰성 및 크로스 플랫폼 기능 덕분에 .NET 개발에서 널리 사용됩니다. 별도의 서버 구성요소가 필요 없이 애플리케이션에 내장될 수 있습니다.

내 .NET 애플리케이션에 SQLite를 통합하려면 어떻게 해야 하나요?

Microsoft.Data.Sqlite NuGet 패키지를 설치하여 .NET 애플리케이션에 SQLite를 통합할 수 있습니다. 이를 통해 ADO.NET 인터페이스를 제공하며, 이를 사용하여 콘솔, 데스크탑, 웹 또는 모바일 앱 내에서 SQLite 데이터베이스를 생성, 연결 및 조작할 수 있습니다.

C#에서 SQLite 데이터베이스를 생성하고 연결하려면 어떻게 해야 하나요?

C#에서 SQLite 데이터베이스를 생성하고 연결하려면 SqliteConnection 클래스를 사용하여 연결을 설정하세요. 그런 다음 SqlCommand 객체를 사용하여 테이블을 생성하고 데이터를 조작할 수 있습니다.

LINQ 쿼리를 .NET 내 SQLite와 함께 사용할 수 있나요?

네, LINQ 쿼리를 .NET에서 SQLite와 함께 사용하려면 Entity Framework Core를 활용할 수 있습니다. 이를 통해 객체-관계 매핑을 수행할 수 있으며, DbContext 클래스 내의 DbSet 속성에서 LINQ 쿼리를 수행할 수 있습니다.

SQLite 데이터베이스 데이터에서 PDF 보고서를 생성하려면 어떻게 해야 하나요?

IronPDF를 사용하여 SQLite 데이터베이스 데이터에서 PDF 보고서를 생성할 수 있습니다. 데이터의 HTML 표현을 변환하거나 데이터베이스 콘텐츠를 직접 사용하여 IronPDF의 렌더링 기능을 통해 상세한 PDF 보고서를 생성하고 내보낼 수 있습니다.

NET 애플리케이션에서 일반적인 SQLite 문제를 해결하려면 어떻게 해야 하나요?

NET 애플리케이션에서 일반적인 SQLite 문제는 Microsoft.Data.Sqlite 패키지의 올바른 설치를 보장하고, SQL 구문을 점검하며, 연결 문자열을 확인함으로써 해결할 수 있습니다. 디버깅 도구와 로그도 오류 식별 및 해결에 도움이 될 수 있습니다.

.NET 프로젝트에 PDF 라이브러리를 설치하고 사용하려면 어떻게 해야 하나요?

IronPDF와 같은 PDF 라이브러리를 .NET 프로젝트에 설치하려면 패키지 관리자 콘솔에서 Install-Package IronPdf 명령을 실행하세요. 설치가 완료되면 IronPDF는 광범위한 API를 이용하여 PDF 파일을 생성, 편집 및 읽을 수 있게 합니다.

SQLite를 .NET과 함께 사용할 때의 장점은 무엇인가요?

.NET과 함께 SQLite를 사용하는 것은 간단함, 별도의 서버 필요 없음, 크로스 플랫폼 지원, 그리고 안정적인 성능과 같은 장점을 제공합니다. 이는 경량 애플리케이션에 이상적이며, Microsoft.Data.Sqlite와 같은 라이브러리를 사용하여 쉽게 통합할 수 있습니다.

제이콥 멜러, 팀 아이언 최고기술책임자
최고기술책임자

제이콥 멜러는 Iron Software의 최고 기술 책임자(CTO)이자 C# PDF 기술을 개척한 선구적인 엔지니어입니다. Iron Software의 핵심 코드베이스를 최초로 개발한 그는 창립 초기부터 회사의 제품 아키텍처를 설계해 왔으며, CEO인 캐머런 리밍턴과 함께 회사를 NASA, 테슬라, 그리고 전 세계 정부 기관에 서비스를 제공하는 50명 이상의 직원을 보유한 기업으로 성장시켰습니다.

제이콥은 맨체스터 대학교에서 토목공학 학사 학위(BEng)를 최우등으로 취득했습니다(1998~2001). 1999년 런던에서 첫 소프트웨어 회사를 설립하고 2005년 첫 .NET 컴포넌트를 개발한 후, 마이크로소프트 생태계 전반에 걸쳐 복잡한 문제를 해결하는 데 전문성을 발휘해 왔습니다.

그의 대표 제품인 IronPDF 및 Iron Suite .NET 라이브러리는 전 세계적으로 3천만 건 이상의 NuGet 설치 수를 기록했으며, 그의 핵심 코드는 전 세계 개발자들이 사용하는 다양한 도구에 지속적으로 활용되고 있습니다. 25년의 실무 경험과 41년의 코딩 전문성을 바탕으로, 제이콥은 차세대 기술 리더들을 양성하는 동시에 기업 수준의 C#, Java, Python PDF 기술 혁신을 주도하는 데 주력하고 있습니다.

아이언 서포트 팀

저희는 주 5일, 24시간 온라인으로 운영합니다.
채팅
이메일
전화해