Sqlite C# .NET (Geliştiriciler İçin Nasıl Çalışır)
SQLite, çeşitli veri erişim uygulamaları ve ortam platformlarında yaygın olarak kullanılan popüler, hafif ve kendini içeren 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ü entegre etmek için mükemmel bir seçimdir. Bu makale, SQLite işlemlerinin dünyasına dalacak, özelliklerini, avantajlarını keşfedecek ve .NET projelerinizde etkin bir şekilde nasıl kullanılacağını inceleyecektir.
C# ile SQLite Nasıl Kullanılır
- SQLite kütüphanesini indirin
- Veritabanı oluşturun ve verileri ekleyin
- Okuyucu kullanarak okuyun
- SQLite'ı Entity Framework ve LINQ sorgu yöntemi kullanarak 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ıdır. SQLite, çeşitli ADO.NET arabirimleri sağlayan kütüphaneler aracılığıyla .NET proje uygulamaları ile kullanılabilir. Bu kütüphanelerden biri Microsoft.Data.SQLite'dir. Bu, SQLite'ı Konsol, Masaüstü, Web veya Mobil olan .NET uygulamalarınız için bir veri kaynağı olarak kullanmanıza olanak tanır. Ayrıca, nesne-ilişkisel eşleme gerçekleştirmek ve LINQ kullanarak SQLite veritabanınızı sorgulamak için Entity Framework Core'u kullanabilirsiniz.
Bu makale, bir .NET Konsol Uygulamasında bir SQLite veritabanını geliştirmek, bağlanmak ve manipüle etmek için Microsoft.Data.Sqlite kullanımını nasıl yapacağınızı gösterir. Şunları nasıl yapılacağını öğreneceksiniz:
- Microsoft.Data.Sqlite NuGet paketini yükleyin
- SQLite bağlantısı oluşturun ve SQL komutlarını çalıştırın
- Veri okuyucular ve parametreler kullanarak tabloları oluşturun ve doldurun
- Veri okuyucular kullanarak veriyi sorgulayın
- EntityFramework Core'u uygulayın
- LINQ kullanarak veriyi sorgulayın
- PDF Raporu Oluşturun
SQLite Kütüphanesini Yükleme
Microsoft.Data.Sqlite kullanmak için, kütüphaneyi ve bağımlılıklarını içeren NuGet paketini yüklemeniz gerekmektedir. Bunu, Visual Studio Package Manager, .NET Core CLI, veya NuGet'i destekleyen herhangi bir araç kullanarak yapabilirsiniz. Bu makale, bir Konsol Uygulaması oluşturmak ve Microsoft.Data.Sqlite'i yüklemek için Package Manager'ı kullanacaktır. 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şturma
Bir SQLite veritabanı ile çalışmak için, veritabanı dosyasına 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 geçerli dizindeki 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ışında kaldığında kapatıldığını ve elden çıkarıldığını garanti eder. SQL komutlarını yürütmek için, bir SqlCommand nesnesi oluşturmanız ve bunu bağlantı ile ilişkilendirmeniz gerekir. Çalıştırmak istediğiniz SQL ifadesini CommandText özelliğine ayarlayabilir ve isteğe bağlı olarak Parameters koleksiyonuna parametreler ekleyebilirsiniz. Daha sonra komutu yürütmek için SqlCommand nesnesinin metodlarından birini, örneğin ExecuteNonQuery, ExecuteScalar veya ExecuteReader gibi çağırabilirsiniz.
SQLite'da Tablo Oluşturma
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 Ekleme
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 Okuma
Bir tablodan veri okumak için, SqlCommand nesnesinin ExecuteReader metodunu kullanabilir ve CommandText özelliğini bir SELECT ifadesine ayarlayabilirsiniz. Bu, size satırlar üzerinden dolaşmanızı ve değerleri sütun adı veya indeks ile erişmenizi sağlayan bir SqliteDataReader nesnesi döndürecektir. Bir sonraki satıra geçmek için Read metodunu ve değerleri uygun veri türü olarak almak için GetXXX metodlarını kullanabilirsiniz. Örneğin, aşağıdaki kod, Employee tablosundaki 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 yapmak için Entity Framework Core'u kullanabilirsiniz. Bunu yapmak için Microsoft.EntityFrameworkCore.Sqlite paketini yüklemeniz gerekir, bu paket Microsoft.Data.Sqlite paketine bağlıdır. Ayrıca, DbContext'den miras alan ve veritabanı bağlamını temsil eden bir sınıf oluşturmanız gerekir. Bu sınıfın, bir DbContextOptions parametresi kabul eden ve bu parametreyi temel kurucusuna ileten bir yapıcıya sahip olması gerekir. Ayrıca, bir sınıfa eşlemek istediğiniz her tablo için bir DbSet özelliği 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ı dizesi ile veritabanı sağlayıcısını belirtmeniz gerekir. Veritabanı ve tabloları oluşturmayan bir durumda oluşturmak için Database.EnsureCreated metodunu da kullanabilirsiniz. Ö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 metodlarını kullanabilir ve eklemek istediğiniz nesneleri geçebilirsiniz. Ayrıca, veritabanına yapılan değişiklikleri onaylamak için SaveChanges metodunu kullanabilirsiniz. Örneğin, aşağıdaki kod veritabanına üç Stocks 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
Veri sorgulamak için, DbSet özelliği üzerinde LINQ metodlarını veya ifadelerini kullanarak filtreler, projeksiyonlar, toplamalar ve diğer işlemleri uygulayabilirsiniz. Sorgular SQL ifadelerine dönüştürülüp veritabanında çalıştırılacaktır. Örneğin, aşağıdaki kod fiyatı altı dolardan az olan hisseleri 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 PDF dosyası oluşturmamız gereken bir senaryoya sahip olduğumuzu varsayalım, bu dosya Hisselerin listesini içermelidir. Bunu IronPDF kullanarak kolayca yapabiliriz.
IronPDF'i Tanıtma
IronPDF, .NET uygulamalarınızda PDF dosyalarını oluşturmanıza, düzenlemenize ve okumanıza yardımcı olan bir kütüphanedir, birden fazla paket gerekmeksizin. HTML, URL, JavaScript, CSS ve birçok resim formatından PDF'ler oluşturabilir, ayrıca başlıklar, altbilgiler, imzalar, ekler ve şifreler ekleyebilir. Ayrıca, platformlar arası uyumluluk, çoklu iş parçacığı ve asenkron destek gibi özellikleri de vardır.
IronPDF'in HTML'den PDF Oluşturma Özelliği ana vurgusudur, tüm düzenleri ve stilleri korur. Web içeriklerinden PDF'ler oluşturur, raporlar, faturalar ve dokümantasyon için idealdir. HTML dosyalarını, URL'leri ve HTML dizelerini sorunsuz 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 Yükleyin
Projemize IronPDF yüklemek için Paket Yöneticisi Konsolu'nda aşağıdaki komutu yazın.
Install-Package IronPdf
Bu komut, tüm bağımlılıklarıyla birlikte IronPDF'i yükleyecektir.
Lisans Anahtarı Ekle
IronPDF'i kullanmak için bir Lisans Anahtarı gereklidir. IronPDF Deneme Lisansı Sayfasından kolayca bir deneme lisans anahtarı alabiliriz.
IronPDF kullanılmadan önce uygulamanızın başlangıcına bu kodu ekleyin. Bu yaklaşım, hem .NET Core hem de .NET Framework uygulamaları için evrensel olarak etkilidir ve basittir.
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"
Hisse Listesi İçeren PDF Dosyası Oluşturma
Bu C# kodu, bir SQLite veritabanında depolanan hisse verilerinden bir PDF raporu oluşturur. Dinamik olarak bir HTML tablosu oluşturur, hisse bilgileri ile doldurur ve tablodan indirilebilir 'stock.pdf' dosyasına dönüştürmek için Chrome tabanlı bir PDF oluşturucu kullanır, bu da hisse detaylarının etkin raporlama ve dağıtımını kolaylaştırır.
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# kod parçası, bir SQLite veritabanından hisse bilgilerini gösteren bir HTML tablosu oluşturmak ve ardından bunu bir PDF dosyasına dönüştürmek üzere tasarlanmıştır. Veritabanı ile etkileşim kurmak için Entity Framework Core kütüphanesi kullanılı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 gömülü CSS stilleri ile bir HTML dizesi oluşturur, başlıklarla bir tablo yapısı oluşturur, hisse bilgilerini çekmek için SQLite veritabanını sorgular, elde edilen verilerle HTML tablosunu doldurur ve son olarak, Chrome tabanlı bir PDF oluşturucu kullanarak HTML içeriğini 'stock.pdf' adıyla bir PDF dosyasına dönüştürür. Ortaya çıkan PDF, hisse sembollerini, adlarını ve fiyatlarını içeren bir tablo içerecektir.
Çıktı Şu Şekildedir

Sonuç
Sonuç olarak, .NET'te SQLite'yi kullanmak, hafif ve çok yönlü bir veritabanı yönetimi çözümü sunar. Bu makale, .NET uygulamalarına SQLite entegrasyonunu inceledi, temel özelliklerini ve avantajlarını sergiledi. Sağlanan kod, bir .NET konsol uygulamasında bir SQLite veritabanı oluşturma, bağlama ve işleme için pratik adımları gösterdi. Ek olarak, verimli veri işleme için Microsoft.Data.Sqlite ve Entity Framework Core'un kullanımını vurguladı. IronPDF'in entegrasyonu, SQLite veritabanından sorunsuz bir şekilde PDF raporu oluşturmayı gösterdi, uygulamanın raporlama ve veri dağıtım yeteneklerini 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üncellemeleri içerir.
Sıkça Sorulan Sorular
SQLite nedir ve .NET gelisiminde neden yaygin olarak kullanilir?
SQLite, hizi, guvenilirligi ve farkli platformlarla uyumu nedeniyle .NET gelisiminde yaygin olarak kullanilan hafif ve kendinden bagimsiz bir iliskisel veritabani motorudur. Ayri bir sunucu bileşeni gerektirmeden uygulamalar icine gomulebilir.
Uygulamama SQLite'yi nasıl entegre edebilirim?
SQLite'yi .NET uygulamaniza entegre etmek için Microsoft.Data.Sqlite NuGet paketini kurabilirsiniz. Bu, ADO.NET arayuzlerini saglar, Console, Masaustu, Web veya Mobil uygulamalarda SQLite veritabanlari oluşturmaya, baglanmaya ve yönetmeye olanak tanir.
C# ile SQLite veritabani oluşturup baglanmayi nasıl yapabilirim?
C# ile SQLite veritabani oluşturup baglanmak için SqliteConnection sınıfini kullanarak bir baglanti kurabilirsin. Daha sonra, SqlCommand nesnesi kullanarak tablolar oluşturabilir ve verilerle işlemler yapabilirsiniz.
SQLite ile .NET icinde LINQ sorgularini kullanabilir miyim?
Evet, Entity Framework Core kullanarak .NET icinde SQLite ile LINQ sorgulari yapabilirsiniz. Bu, nesne-iliski örnekleme yaparak, bir DbContext sınıfi icindeki DbSet özelliklerine LINQ sorgulari yapmanizi saglar.
SQLite veritabanindaki verilerden PDF raporlarini nasıl oluşturabilirim?
SQLite veritabanindaki verilerden IronPDF kullanarak PDF raporlar oluşturabilirsiniz. Verilerinizin HTML temsillerini dönüştürerek veya doğrudan veritabanı icerigi kullanarak detayli PDF raporlar oluşturabilir ve IronPDF'in render kapasitelikleriyle ihraç edebilirsiniz.
NET uygulamalarinda yaygin SQLite sorunlarini nasıl giderebilirim?
NET uygulamalarinda yaygin SQLite sorunlari, Microsoft.Data.Sqlite paketinin doğru kurulmasini saglayarak, SQL soz dizilimini kontrol ederek ve baglanti dizilerini doğrulayarak cozulebilir. Hata ayiklama araclari ve loglar da hatalari tespit ve giderme konusunda yararli olabilir.
Bir .NET projesine bir PDF kütüphanesi nasıl kurulur ve kullanilir?
Bir PDF kütüphanesi olan IronPDF'i .NET projesine kurmak için, Paket Yönetici Konsolunda Install-Package IronPdf komutunu çalıştırin. Kurulduktan sonra, IronPDF'in kapsamli API'sini kullanarak PDF dosyalari oluşturabilir, düzenleyebilir ve okuyabilirsiniz.
SQLite'yi .NET ile kullanmanin avantajlari nelerdir?
SQLite'yi .NET ile kullanmak, ayri bir sunucu gereksinimi olmamasi, farkli platform destekleri ve guvenilir performans gibi avantajlar sunar. Hafif uygulamalar için idealdir ve Microsoft.Data.Sqlite gibi kütüphaneler kullanarak kolayca entegre edilebilir.




