Sqlite C# .NET (Geliştiriciler İçin Nasıl Çalışır)
SQLite, çeşitli veri erişim uygulama ve ortam platformlarında yaygın olarak kullanılan, popüler, hafif ve kendi kendine yeten bir ilişkisel veritabanı motorudur. .NET geliştirme bağlamında, SQLite kaynak kodu, sistem uygulamalarınıza güvenilir bir veritabanı çözüm kontrolünü entegre etmek için mükemmel bir seçim sunar. Bu makale, SQLite işlemleri dünyasına dalarak, özelliklerini, avantajlarını ve .NET projelerinizde nasıl etkili bir şekilde kullanılacağını inceleyecektir.
SQLite'ı C# ile Nasıl Kullanabilirsiniz
- SQLite kütüphanesini indirin
- Bir veritabanı oluşturulması ve veri eklenmesi
- Okuma işlemi okuyucu kullanılarak
- SQLite'ı Entity Framework ve LINQ sorgu yöntemiyle kullanın
- IronPDF kullanarak PDF Raporu Oluşturun
SQLite Nedir?
SQLite, ayrı bir sunucu bileşeni gerektirmeden uygulamalara gömülebilen popüler bir açık kaynaklı veritabanı motorudur. Hızlı, güvenilir ve platformlar arası çalışabilir. SQLite, ADO.NET arabirimleri sağlayan çeşitli kütüphaneler aracılığıyla .NET proje uygulamaları ile kullanılabilir. Bu kütüphanelerden biri Microsoft.Data.SQLite kütüphanesidir. Bu, .NET uygulamalarınız için SQLite'ı bir veri kaynağı olarak kullanmanıza olanak tanır; ister Konsol, Masaüstü, Web, ister Mobil olsun. Ayrıca, nesne-ilişkisel eşleme yapmak ve SQLite veritabanınızı LINQ kullanarak sorgulamak için Entity Framework Core kullanabilirsiniz.
Bu makale, bir .NET Konsol Uygulamasında SQLite veritabanını geliştirmek, bağlanmak ve manipüle etmek için Microsoft.Data.Sqlite kullanmayı gösterir. Öğreneceğiniz konular:
- Microsoft.Data.Sqlite NuGet paketini yüklemek
- SQLite bağlantısı oluşturmak ve SQL komutları yürütmek
- Veri okuyucular ve parametreler kullanarak tablolar oluşturmak ve doldurmak
- Veri okuyucuları kullanarak veri sorgulaması yapmak
- EntityFramework Core'u uygulamak
- LINQ kullanarak veri sorgulaması yapmak
- PDF Raporu oluşturmak
SQLite Kütüphanesini Yüklemek
Microsoft.Data.Sqlite kütüphanesini kullanmak için, kütüphaneyi ve bağımlılıklarını içeren NuGet paketini yüklemeniz gerekir. Bunu Visual Studio Paket Yöneticisi, .NET Core CLI veya NuGet destekleyen herhangi bir araç ile yapabilirsiniz. Bu makalede Paket Yöneticisi kullanarak bir Konsol Uygulaması oluşturulacak ve Microsoft.Data.Sqlite yüklenecektir. Bunu yapmak için bir Paket Yöneticisi Konsolu açın ve aşağıdaki komutları çalıştırın:
Install-Package Microsoft.Data.Sqlite
Yukarıdaki komut paketi aşağıda gösterildiği gibi yükleyecektir.
SQLite Veritabanı Oluşturmak
Bir SQLite veritabanı ile çalışmak için, veritabanı dosyasına olan bağlantıyı temsil eden bir SqliteConnection nesnesi oluşturmanız gerekir. Bağlantı dizesinde dosya adını ve diğer seçenekleri belirtebilirsiniz. Dosya mevcut değilse, otomatik olarak oluşturulacaktır. Örneğin, aşağıdaki program mevcut dizinde employee.db adlı bir veritabanı dosyasına bağlantı oluşturur:
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 ifadesi, bağlantının kapsam dışına çıktığında kapatılmasını ve ortadan kaldırılmasını sağlar. SQL komutlarını yürütmek için bir SqlCommand nesnesi oluşturmanız ve bunu bağlantı ile ilişkilendirmeniz gerekir. CommandText özelliğini yürütmek istediğiniz SQL ifadesine ayarlayabilir ve isteğe bağlı olarak parametreleri Parameters koleksiyonuna ekleyebilirsiniz. Daha sonra komutu yürütmek için SqlCommand nesnesinin bir yöntemini çağırabilirsiniz, örneğin ExecuteNonQuery, ExecuteScalar veya ExecuteReader.
SQLite'da Tablo Oluşturmak
Aşağıdaki kod, ExecuteNonQuery yöntemi kullanılarak Employee adlı bir tablo oluşturur:
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
Tabloya Veri Eklemek
Bir tabloya veri eklemek için aynı SqlCommand nesnesini kullanabilir ve CommandText özelliğini bir INSERT ifadesine ayarlayabilirsiniz. Örneğin, aşağıdaki kod Employee tablosuna üç satır ekler.
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'dan Veri Okumak
Bir tablodan veri okumak için, SqlCommand nesnesinin ExecuteReader yöntemini kullanabilir ve CommandText özelliğini bir SELECT ifadesine ayarlayabilirsiniz. Bu, satırlarda gezinmenize ve değerleri sütun adı veya indeksine göre erişmenize olanak tanıyan bir SqliteDataReader nesnesi döndürecektir. Bir sonraki satıra geçmek için Read yöntemini ve uygun veri türünde değerler almak için GetXXX yöntemlerini kullanabilirsiniz. Örneğin, aşağıdaki kod Employee tablosundan tüm satırları okur ve bunları konsola yazdırır:
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
Çıktı
Bu kodun çıktısı şudur:

Veri Sorgulama
SQLite veritabanınızı sorgulamak için LINQ kullanmayı tercih ederseniz, tablolarınızı sınıflara eşlemek ve LINQ ifadeleri kullanarak sorguları gerçekleştirmek için Entity Framework Core kullanabilirsiniz. Bunu yapmak için, Microsoft.Data.Sqlite paketine bağımlı olan Microsoft.EntityFrameworkCore.Sqlite paketini yüklemeniz gerekir. Ayrıca DbContext'dan türeyen ve veritabanı bağlamını temsil eden bir sınıf oluşturmanız gerekir. Bu sınıfın bir DbContextOptions parametresini kabul eden ve onu temel kurucuya aktaran bir kurucuya sahip olması gerekir. Ayrıca, bir sınıfa eşlemek istediğiniz her tablo için bir DbSet özelliğine sahip olmalıdır. Örneğin, aşağıdaki kod bir Stock sınıfı ve bir DatabaseContext sınıfı tanımlar:
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
Veritabanı bağlamını oluşturmak için, DbContextOptionsBuilder sınıfını kullanmanız ve bağlantı dizgesini ve veritabanı sağlayıcısını belirtmeniz gerekir. Ayrıca Database.EnsureCreated yöntemini kullanarak veritabanı ve tabloları oluşturabilirsiniz, eğer mevcut değillerse. Örneğin, aşağıdaki kod veritabanı bağlamını ve veritabanını oluşturur:
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
Veritabanına veri eklemek için, DbSet özelliğinin Add veya AddRange yöntemlerini kullanabilir ve eklemek istediğiniz nesneleri geçebilirsiniz. Değişiklikleri veritabanına taahhüt etmek için ayrıca SaveChanges yöntemini kullanabilirsiniz. Örneğin, aşağıdaki kod veritabanına üç Stok ekler:
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
Verileri sorgulamak için DbSet özelliği üzerinde LINQ yöntemlerini veya ifadelerini kullanabilir ve filtreler, projeksiyonlar, toplamalara ve diğer işlemleri uygulayabilirsiniz. Sorgular, SQL cümlelerine çevriler ve veritabanında yürütülür. Örneğin, aşağıdaki kod fiyatı altı dolardan az olan stokları sorgular ve adlarını yazdırır:
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
Bir Stok listesi içeren bir PDF dosyası oluşturma gereksinimimiz olan bir senaryo olduğunu varsayalım. Bunu IronPDF kullanarak kolayca yapabiliriz.
IronPDF Tanıtımı
IronPDF, birçok pakete ihtiyaç duymadan .NET uygulamalarınızda PDF dosyaları oluşturmanıza, düzenlemenize ve okumanıza yardımcı olan bir kütüphanedir. HTML, URL, JavaScript, CSS ve birçok görüntü formatından PDF oluşturabilir, ayrıca başlıklar, altbilgiler, imzalar, ekler ve parolalar ekleyebilir. Çapraz platform uyumluluğu, çok iş parçacıklılığı ve asenkron destek sunar.
IronPDF'nin HTML'den PDF'e Dönüştürme Özelliği, tüm düzenleri ve stilleri koruyarak en önemli özelliğidir. Web içeriğinden PDF'ler üretir, raporlar, faturalar ve dökümantasyon için idealdir. HTML dosyalarını, URL'leri ve HTML dizgilerini kesintisiz bir şekilde PDF'lere dönüştürebilirsiniz.
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 Kurulumu
Projemize IronPDF kurmak için Paket Yöneticisi Konsoluna aşağıdaki komutu yazın.
Install-Package IronPdf
Bu komut, IronPDF'yi tüm bağımlılıkları ile birlikte yükleyecektir.
Lisans Anahtarı Ekleme
IronPDF kullanmak için bir Lisans Anahtarı gerektirir. IronPDF Deneme Lisansı Sayfası'ndan kolayca bir deneme lisans anahtarı alabiliriz.
Bu kodu IronPDF kullanılmadan önce uygulamanızın başlangıcına ekleyin. Bu yaklaşım, hem .NET Core hem de .NET Framework uygulamaları için evrensel olarak etkili ve açıktır.
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"
Stok Listesi İçeren PDF Dosyası Oluştur
Bu C# kodu, bir SQLite veritabanında depolanan stok verisinden bir PDF raporu oluşturur. Dinamik olarak bir HTML tablo oluşturur, stok bilgileri ile doldurur ve tabloyu indirilebilir bir "stock.pdf" dosyasına dönüştürmek için Chrome tabanlı bir PDF oluşturucu kullanır, stok detaylarının verimli raporlanmasını ve dağıtımını sağlar.
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")
Yukarıdaki C# kodu parçası, bir SQLite veritabanından stok bilgilerini gösteren bir HTML tablo oluşturmak ve ardından bir PDF dosyasına dönüştürmek üzere tasarlanmıştır. Veritabanı ile etkileşim kurmak için Entity Framework Core kütüphanesini kullanır. Başlangıçta, belirli bir bağlantı dizesi ile SQLite kullanmak için bir DbContextOptionsBuilder yapılandırır. Kod daha sonra tablo görünümü için CSS stilleriyle gömülü bir HTML dizgesi oluşturur, başlıklarla birlikte bir tablo yapısı oluşturur, SQLite veritabanından stok bilgilerini sorgular, alınan verilerle HTML tablosunu doldurur ve son olarak, HTML içeriğini "stock.pdf" adlı bir PDF dosyasına dönüştürmek için Chrome tabanlı bir PDF oluşturucu kullanır. Sonuç olarak, PDF bir tablo içinde stok sembollerini, adlarını ve fiyatlarını gösterecektir.
Çıktı Şöyle

Sonuç
Sonuç olarak, .NET'te SQLite kullanmak, veritabanı yönetimi için hafif ve esnek bir çözüm sunar. Bu makale, SQLite'ın .NET uygulamalarına entegrasyonunu, temel özelliklerini ve avantajlarını gösteren bir keşif sundu. Sağlanan kod, .NET konsol uygulamasında bir SQLite veritabanı oluşturmanın, bağlanmanın ve manipüle etmenin pratik adımlarını gösterdi. Ek olarak, verimli veri işlemleri için Microsoft.Data.Sqlite ve Entity Framework Core'un kullanımına dikkat çekti. IronPDF'nin entegrasyonu, SQLite veritabanından PDF raporu nasıl üretilir konusunda bir örnek sunarak, uygulamanın raporlama ve veri dağıtımı kabiliyetlerini artırdı.
IronPDF, geliştirici sayısı, konumlar, projeler ve yeniden dağıtım ihtiyaçlarına bağlı olarak çeşitli lisans seçenekleri sunar. Lisanslar süresizdir ve bir yıl ücretsiz destek ve güncelleme içerir.
Sıkça Sorulan Sorular
SQLite nedir ve neden .NET geliştirme için popülerdir?
SQLite, .NET geliştirmede hızı, güvenilirliği ve platformlar arası yetenekleri nedeniyle yaygın olarak kullanılan hafif ve bağımsız bir ilişkisel veritabanı motorudur. Ayrı bir sunucu bileşeni gerektirmeden uygulamalara gömülebilir.
SQLite'ı .NET uygulamama nasıl entegre edebilirim?
Microsoft.Data.Sqlite NuGet paketini yükleyerek SQLite'ı .NET uygulamanıza entegre edebilirsiniz. Bu, ADO.NET arabirimlerini sağlayarak, Console, Desktop, Web veya Mobile uygulamalarında SQLite veritabanları oluşturmanıza, bağlanmanıza ve bunları yönetmenize olanak tanır.
C#'da bir SQLite veritabanı nasıl oluşturulur ve bağlantı sağlanır?
C#'da bir SQLite veritabanı oluşturmak ve bağlanmak için, bir bağlantı kurmak için SqliteConnection sınıfını kullanın. Ardından tablolar oluşturmak ve verileri manipüle etmek için SqlCommand nesnesini kullanarak SQL komutlarını yürütebilirsiniz.
SQLite ile .NET'te LINQ sorguları kullanabilir miyim?
Evet, .NET'te SQLite ile LINQ sorguları kullanabilirsiniz, bunun için Entity Framework Core'u kullanabilirsiniz. Bu, nesne-ilişkisel eşleştirme sağlar ve bir DbContext sınıfı içindeki DbSet özelliklerinde LINQ sorguları yapmanıza olanak tanır.
SQLite veritabanı verilerinden PDF raporları nasıl üretebilirim?
IronPDF kullanarak SQLite veritabanı verilerinden PDF raporları üretebilirsiniz. Verilerinizin HTML temsilcilerini dönüştürerek veya doğrudan veritabanı içeriğini kullanarak IronPDF'in render yetenekleriyle detaylı PDF raporları oluşturabilir ve dışa aktarabilirsiniz.
.NET uygulamalarında yaygın SQLite sorunlarını nasıl giderebilirim?
.NET uygulamalarında yaygın SQLite sorunlarını, Microsoft.Data.Sqlite paketinin düzgün kurulduğunu kontrol ederek, SQL sözdizimini denetleyerek ve bağlantı dizgelerini doğrulayarak giderebilirsiniz. Hata ayıklama araçları ve günlükler de hataların tanımlanmasına ve çözülmesine yardımcı olabilir.
.NET projesine bir PDF kütüphanesi nasıl yüklenir ve kullanılır?
Bir PDF kütüphanesi olan IronPDF gibi kütüphaneleri bir .NET projesine yüklemek için Paket Yöneticisi Konsolu'nda Install-Package IronPdf komutunu çalıştırın. Yüklendikten sonra, IronPDF geniş API'sini kullanarak PDF dosyaları oluşturmanıza, düzenlemenize ve okumanıza imkan tanır.
SQLite'ı .NET ile kullanmanın avantajları nelerdir?
SQLite'ı .NET ile kullanmak, basitlik, ayrı bir sunucuya ihtiyaç olmaması, platformlar arası destek ve güvenilir performans gibi avantajlar sunar. Hafif uygulamalar için idealdir ve Microsoft.Data.Sqlite gibi kütüphaneler kullanılarak kolayca entegre edilebilir.




