C# SQLite (jak to działa dla programistów)
Wprowadzenie do SQLite
SQLite to samodzielny, bezserwerowy i niewymagający konfiguracji silnik bazy danych używany w różnych aplikacjach, w tym aplikacjach desktopowych, webowych oraz mobilnych. W tym samouczku zagłębimy się w używanie SQLite z C#. Przy użyciu prostych i łatwo zrozumiałych przykładów nauczysz się tworzyć, zarządzać i wchodzić w interakcję z bazą danych SQLite.
Czym jest SQLite?
SQLite to lekka i wydajna baza danych, która przechowuje dane w jednym pliku. W przeciwieństwie do tradycyjnych baz danych nie wymaga oddzielnego serwera. Czyni to SQLite świetnym wyborem dla aplikacji, które potrzebują bazy danych bez złożoności pełnego systemu bazodanowego.
Setting Up SQLite in C
Użycie Menadżera Pakietów NuGet
Aby pracować z SQLite w projekcie C#, musisz zainstalować niezbędną bibliotekę SQLite. Można to zrobić za pomocą Menadżera Pakietów NuGet.
- Otwórz Visual Studio i utwórz nową aplikację konsolową.
- Kliknij prawym przyciskiem myszy na projekcie i wybierz 'Zarządzaj pakietami NuGet'.
- Wyszukaj 'SQLite' i zainstaluj pakiet.
Nawiązywanie połączenia
Ciąg połączenia
Ciąg połączenia to ciąg, który określa informacje o źródle danych i sposoby połączenia się z nim. W SQLite ciąg połączenia często wygląda w ten sposób:
string connectionString = "Data Source=mydatabase.db;";
string connectionString = "Data Source=mydatabase.db;";
Dim connectionString As String = "Data Source=mydatabase.db;"
Obiekt połączenia
Możesz utworzyć obiekt połączenia używając klasy SQLiteConnection z przestrzeni nazw System.Data.SQLite.
using System.Data.SQLite;
// Initialize a connection to the SQLite database
var connection = new SQLiteConnection(connectionString);
// Open the connection
connection.Open();
using System.Data.SQLite;
// Initialize a connection to the SQLite database
var connection = new SQLiteConnection(connectionString);
// Open the connection
connection.Open();
Imports System.Data.SQLite
' Initialize a connection to the SQLite database
Private connection = New SQLiteConnection(connectionString)
' Open the connection
connection.Open()
Tworzenie tabeli
Utwórz tabelę
Tworzenie tabeli jest podstawą podczas pracy z jakąkolwiek bazą danych. Oto jak utworzyć tabelę używając kodu SQLite.
// SQL command to create a new table "person"
string query = "CREATE TABLE IF NOT EXISTS person (id INTEGER PRIMARY KEY, name TEXT)";
// Create a command object with the SQL query and connection
var command = new SQLiteCommand(query, connection);
// Execute the command to create the table
command.ExecuteNonQuery();
// SQL command to create a new table "person"
string query = "CREATE TABLE IF NOT EXISTS person (id INTEGER PRIMARY KEY, name TEXT)";
// Create a command object with the SQL query and connection
var command = new SQLiteCommand(query, connection);
// Execute the command to create the table
command.ExecuteNonQuery();
' SQL command to create a new table "person"
Dim query As String = "CREATE TABLE IF NOT EXISTS person (id INTEGER PRIMARY KEY, name TEXT)"
' Create a command object with the SQL query and connection
Dim command = New SQLiteCommand(query, connection)
' Execute the command to create the table
command.ExecuteNonQuery()
- Id Integer Primary Key: Ustawia kolumnę 'id' jako klucz podstawowy.
- Nazwa tabeli: Nazwa, którą chcesz nadać swojej tabeli bazy danych.
Wstawianie danych
Wstaw wiersze
Aby wstawić dane do tabeli, musisz użyć polecenia INSERT.
// SQL command to insert a new row into the "person" table
string query = "INSERT INTO person (name) VALUES ('John')";
var command = new SQLiteCommand(query, connection);
command.ExecuteNonQuery();
// SQL command to insert a new row into the "person" table
string query = "INSERT INTO person (name) VALUES ('John')";
var command = new SQLiteCommand(query, connection);
command.ExecuteNonQuery();
' SQL command to insert a new row into the "person" table
Dim query As String = "INSERT INTO person (name) VALUES ('John')"
Dim command = New SQLiteCommand(query, connection)
command.ExecuteNonQuery()
Sparametryzowane polecenie
Sparametryzowane polecenia mogą chronić twoją aplikację przed atakami SQL Injection. To podejście używa parametrów zamiast bezpośredniego wstawiania wartości do zapytania.
// SQL command with a parameter to insert data safely
string query = "INSERT INTO person (name) VALUES (@name)";
var command = new SQLiteCommand(query, connection);
command.Parameters.AddWithValue("@name", "Iron Developer");
command.ExecuteNonQuery();
// SQL command with a parameter to insert data safely
string query = "INSERT INTO person (name) VALUES (@name)";
var command = new SQLiteCommand(query, connection);
command.Parameters.AddWithValue("@name", "Iron Developer");
command.ExecuteNonQuery();
' SQL command with a parameter to insert data safely
Dim query As String = "INSERT INTO person (name) VALUES (@name)"
Dim command = New SQLiteCommand(query, connection)
command.Parameters.AddWithValue("@name", "Iron Developer")
command.ExecuteNonQuery()
Pobieranie danych
Instrukcja SELECT
Aby pobrać dane z tabeli bazy danych, użyj instrukcji SELECT.
// SQL command to select all rows from the "person" table
string query = "SELECT * FROM person";
var command = new SQLiteCommand(query, connection);
var reader = command.ExecuteReader();
// Loop through the result set and read data
while (reader.Read())
{
Console.WriteLine(reader["name"]);
}
// SQL command to select all rows from the "person" table
string query = "SELECT * FROM person";
var command = new SQLiteCommand(query, connection);
var reader = command.ExecuteReader();
// Loop through the result set and read data
while (reader.Read())
{
Console.WriteLine(reader["name"]);
}
' SQL command to select all rows from the "person" table
Dim query As String = "SELECT * FROM person"
Dim command = New SQLiteCommand(query, connection)
Dim reader = command.ExecuteReader()
' Loop through the result set and read data
Do While reader.Read()
Console.WriteLine(reader("name"))
Loop
Zaawansowane funkcje
Transakcje SQLite
Transakcje pozwalają na wykonanie wielu operacji w jednym atomowym działaniu. Oto jak używać transakcji:
var transaction = connection.BeginTransaction();
try
{
// Example of multiple operations in a transaction
var insertCommand = new SQLiteCommand("INSERT INTO person (name) VALUES ('Alice')", connection, transaction);
insertCommand.ExecuteNonQuery();
var updateCommand = new SQLiteCommand("UPDATE person SET name = 'Bob' WHERE name = 'Alice'", connection, transaction);
updateCommand.ExecuteNonQuery();
transaction.Commit(); // Commit the transaction if all operations succeed
}
catch
{
transaction.Rollback(); // Rollback the transaction if any operation fails
}
var transaction = connection.BeginTransaction();
try
{
// Example of multiple operations in a transaction
var insertCommand = new SQLiteCommand("INSERT INTO person (name) VALUES ('Alice')", connection, transaction);
insertCommand.ExecuteNonQuery();
var updateCommand = new SQLiteCommand("UPDATE person SET name = 'Bob' WHERE name = 'Alice'", connection, transaction);
updateCommand.ExecuteNonQuery();
transaction.Commit(); // Commit the transaction if all operations succeed
}
catch
{
transaction.Rollback(); // Rollback the transaction if any operation fails
}
Dim transaction = connection.BeginTransaction()
Try
' Example of multiple operations in a transaction
Dim insertCommand = New SQLiteCommand("INSERT INTO person (name) VALUES ('Alice')", connection, transaction)
insertCommand.ExecuteNonQuery()
Dim updateCommand = New SQLiteCommand("UPDATE person SET name = 'Bob' WHERE name = 'Alice'", connection, transaction)
updateCommand.ExecuteNonQuery()
transaction.Commit() ' Commit the transaction if all operations succeed
Catch
transaction.Rollback() ' Rollback the transaction if any operation fails
End Try
Mapowanie obiektowo-relacyjne (ORM) z Entity Framework
Entity Framework (EF) to szeroko stosowane narzędzie ORM w ekosystemie .NET. Ułatwia programowanie bazodanowe, pozwalając deweloperom pracować z danymi relacyjnymi przy użyciu obiektów specyficznych dla domeny. Oto jak możesz używać Entity Framework z SQLite.
1. Instalowanie Entity Framework
Najpierw upewnij się, że masz zainstalowany pakiet NuGet Entity Framework specyficzny dla SQLite:
- Otwórz Menadżera Pakietów NuGet w Visual Studio.
- Wyszukaj 'Entity Framework SQLite' i zainstaluj go.
2. Tworzenie klas encji
Klasy encji są reprezentacjami tabel bazy danych. Możesz utworzyć klasę dla każdej tabeli, z którą zamierzasz współpracować.
public class Person
{
public int Id { get; set; } // Primary Key
public string Name { get; set; }
}
public class Person
{
public int Id { get; set; } // Primary Key
public string Name { get; set; }
}
Public Class Person
Public Property Id() As Integer ' - Primary Key
Public Property Name() As String
End Class
3. DbContext
Musisz utworzyć klasę dziedziczącą z DbContext. Klasa ta reprezentuje sesję z bazą danych i pozwala na zapytania i zapisywanie instancji encji.
using Microsoft.EntityFrameworkCore;
public class MyDbContext : DbContext
{
public DbSet<Person> Persons { get; set; }
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder.UseSqlite("Data Source=mydatabase.db;");
}
}
using Microsoft.EntityFrameworkCore;
public class MyDbContext : DbContext
{
public DbSet<Person> Persons { get; set; }
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder.UseSqlite("Data Source=mydatabase.db;");
}
}
Imports Microsoft.EntityFrameworkCore
Public Class MyDbContext
Inherits DbContext
Public Property Persons() As DbSet(Of Person)
Protected Overrides Sub OnConfiguring(ByVal optionsBuilder As DbContextOptionsBuilder)
optionsBuilder.UseSqlite("Data Source=mydatabase.db;")
End Sub
End Class
4. Operacje CRUD
Entity Framework upraszcza operacje Create, Read, Update i Delete (CRUD). Oto jak możesz wstawić nowy rekord:
using (var db = new MyDbContext())
{
db.Persons.Add(new Person { Name = "John" });
db.SaveChanges();
}
using (var db = new MyDbContext())
{
db.Persons.Add(new Person { Name = "John" });
db.SaveChanges();
}
Using db = New MyDbContext()
db.Persons.Add(New Person With {.Name = "John"})
db.SaveChanges()
End Using
Odczyt, aktualizacja i usuwanie rekordów są równie uproszczone i przystępne z Entity Framework, co pozwala na zwięzły i łagodny w utrzymaniu kod.
Praca z plikami XML i innymi dostawcami danych
SQLite nie jest ograniczone do danych relacyjnych; zapewnia także elastyczność w obsłudze innych typów danych, w tym plików XML.
1. Przechowywanie danych XML
Możesz przechowywać dane XML w bazie danych SQLite. Może to być przydatne, jeśli pracujesz z danymi konfiguracyjnymi lub innymi strukturami hierarchicznymi.
string xmlData = "<person><name>John</name></person>";
string query = "INSERT INTO xmltable (data) VALUES (@data)";
var command = new SQLiteCommand(query, connection);
command.Parameters.AddWithValue("@data", xmlData);
command.ExecuteNonQuery();
string xmlData = "<person><name>John</name></person>";
string query = "INSERT INTO xmltable (data) VALUES (@data)";
var command = new SQLiteCommand(query, connection);
command.Parameters.AddWithValue("@data", xmlData);
command.ExecuteNonQuery();
Dim xmlData As String = "<person><name>John</name></person>"
Dim query As String = "INSERT INTO xmltable (data) VALUES (@data)"
Dim command = New SQLiteCommand(query, connection)
command.Parameters.AddWithValue("@data", xmlData)
command.ExecuteNonQuery()
Pobieranie danych XML
Możesz pobierać i pracować z danymi XML, używając standardowych technik analizy XML w C#.
string query = "SELECT data FROM xmltable WHERE id = 1";
var command = new SQLiteCommand(query, connection);
var reader = command.ExecuteReader();
string xmlData;
// Read the XML data from the query result
if (reader.Read())
{
xmlData = reader["data"].ToString();
}
// Parse the XML data as needed using an XML parser
string query = "SELECT data FROM xmltable WHERE id = 1";
var command = new SQLiteCommand(query, connection);
var reader = command.ExecuteReader();
string xmlData;
// Read the XML data from the query result
if (reader.Read())
{
xmlData = reader["data"].ToString();
}
// Parse the XML data as needed using an XML parser
Dim query As String = "SELECT data FROM xmltable WHERE id = 1"
Dim command = New SQLiteCommand(query, connection)
Dim reader = command.ExecuteReader()
Dim xmlData As String
' Read the XML data from the query result
If reader.Read() Then
xmlData = reader("data").ToString()
End If
' Parse the XML data as needed using an XML parser
Praca z innymi dostawcami danych
SQLite dobrze integruje się z różnymi dostawcami danych, co pozwala na interoperacyjność i elastyczność. Oznacza to, że możesz płynnie przełączać się między różnymi bazami danych lub nawet łączyć różne źródła danych w jednej aplikacji.
Przedstawiamy Iron Suit: Potężny zestaw bibliotek
Po eksploracji światów SQLite i operatorów logicznych w C#, czas przedstawić niezwykły zbiór narzędzi, które uzupełniają i wzbogacają doświadczenie programistyczne w środowisku .NET. Iron Suit to kolekcja potężnych bibliotek składających się z IronPDF, IronXL, IronOCR i IronBarcode, z których każda pełni odrębne funkcje.
IronPDF: biblioteka PDF dla języka C
Przewodnik po IronPDF to kompleksowa biblioteka zaprojektowana do tworzenia, odczytywania i manipulowania plikami PDF w C#. Niezależnie od tego, czy potrzebujesz generować raporty, faktury, czy dokumenty w formacie PDF, IronPDF jest dla Ciebie. Unikalną cechą IronPDF jest możliwość konwersji HTML na PDF. Możesz renderować HTML jako dokument PDF, w tym CSS, JavaScript i obrazy, co czyni go potężnym narzędziem. Sprawdź ten samouczek na temat Konwersji HTML na PDF z IronPDF dla przewodnika krok po kroku.
Funkcja HTML na PDF w IronPDF to jego główna atrakcja, zachowując wszystkie układy i style. Generuje pliki PDF na podstawie treści internetowych, co idealnie nadaje się do raportów, faktur i dokumentacji. Możesz płynnie konwertować pliki HTML, adresy URL i ciągi znaków HTML do formatu PDF.
using IronPdf;
class Program
{
static void Main(string[] args)
{
var renderer = new ChromePdfRenderer();
// 1. Convert HTML String to PDF
var htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>";
var pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent);
pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf");
// 2. Convert HTML File to PDF
var htmlFilePath = "path_to_your_html_file.html"; // Specify the path to your HTML file
var pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath);
pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf");
// 3. Convert URL to PDF
var url = "http://ironpdf.com"; // Specify the URL
var pdfFromUrl = renderer.RenderUrlAsPdf(url);
pdfFromUrl.SaveAs("URLToPDF.pdf");
}
}
using IronPdf;
class Program
{
static void Main(string[] args)
{
var renderer = new ChromePdfRenderer();
// 1. Convert HTML String to PDF
var htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>";
var pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent);
pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf");
// 2. Convert HTML File to PDF
var htmlFilePath = "path_to_your_html_file.html"; // Specify the path to your HTML file
var pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath);
pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf");
// 3. Convert URL to PDF
var url = "http://ironpdf.com"; // Specify the URL
var pdfFromUrl = renderer.RenderUrlAsPdf(url);
pdfFromUrl.SaveAs("URLToPDF.pdf");
}
}
Imports IronPdf
Friend Class Program
Shared Sub Main(ByVal args() As String)
Dim renderer = New ChromePdfRenderer()
' 1. Convert HTML String to PDF
Dim htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>"
Dim pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent)
pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf")
' 2. Convert HTML File to PDF
Dim htmlFilePath = "path_to_your_html_file.html" ' Specify the path to your HTML file
Dim pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath)
pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf")
' 3. Convert URL to PDF
Dim url = "http://ironpdf.com" ' Specify the URL
Dim pdfFromUrl = renderer.RenderUrlAsPdf(url)
pdfFromUrl.SaveAs("URLToPDF.pdf")
End Sub
End Class
IronPDF może być istotnym narzędziem podczas pracy z bazami danych SQLite. Możesz generować raporty PDF z danych bazy danych SQLite, co umożliwia płynne prezentowanie i udostępnianie danych.
IronXL: Łatwe zarządzanie plikami Excel
Odkryj IronXL do integracji z Excelem pozwalający deweloperom odczytywać, zapisywać i manipulować plikami Excel bez wysiłku. Jest kompatybilny z XLS, XLSX i innymi, co czyni go idealnym narzędziem do obsługi danych arkuszy kalkulacyjnych. Możesz odczytywać pliki Excel, manipulować nimi, a nawet tworzyć nowe pliki od podstaw. Funkcjonalność IronXL dobrze integruje się z zarządzaniem bazami danych, w tym SQLite, umożliwiając eksport i import danych.
IronOCR: Optical Character Recognition in C
Z IronOCR do rozpoznawania tekstu, skanowanie tekstu z obrazów i plików PDF jest proste. To wszechstronna biblioteka OCR (Optical Character Recognition), która rozpoznaje tekst z różnych źródeł.
Wyobraź sobie przechowywanie zeskanowanych dokumentów w bazie danych SQLite i używanie IronOCR do wyodrębniania i rozpoznawania tekstu w tych dokumentach. Możliwości są nieskończone, zapewniając potężne funkcjonalności przeszukiwania i wyszukiwania tekstu.
IronBarcode: Ostateczna biblioteka generowania i odczytywania kodów kreskowych
Generowanie i odczytywanie kodów kreskowych staje się proste dzięki Potężnej integracji kodów kreskowych przez IronBarcode. Obsługuje wiele formatów kodów kreskowych i oferuje solidne API dla wszystkich potrzeb związanych z kodami kreskowymi. IronBarcode może odgrywać istotną rolę w aplikacjach korzystających z SQLite, gdzie kody kreskowe mogą reprezentować produkty lub inne jednostki danych. Przechowywanie i pobieranie kodów kreskowych z bazy danych SQLite zwiększa integralność danych i ułatwia szybki dostęp.
Wnioski
SQLite to potężny, a jednocześnie lekki silnik bazy danych, który jest doskonały zarówno dla początkujących, jak i profesjonalistów. Od tworzenia tabel i wstawiania wierszy po zarządzanie transakcjami i zapobieganie atakom SQL Injection, SQLite oferuje wiele funkcji. Niezależnie od tego, czy budujesz aplikację konsolową lub mobilną, czy musisz pracować z kluczami obcymi i zestawami danych, SQLite jest doskonałym wyborem.
Iron Suit, składający się z IronPDF, IronXL, IronOCR i IronBarcode, jest skarbcem narzędzi, które rozszerzają możliwości twoich projektów deweloperskich w C#, czy to przy pracy z bazami danych SQLite, czy innych domen.
Co jeszcze bardziej przyciąga, każdy z tych produktów oferuje bezpłatną wersję próbną produktów Iron Software, dając ci wystarczająco dużo czasu na poznanie bogatego zestawu funkcji, które oferują. Gdy zdecydujesz się kontynuować pracę z tymi narzędziami, licencja zaczyna się od $799 za produkt. Możesz również kupić cały pakiet Iron Suit w cenie raptem dwóch pojedynczych produktów.
Często Zadawane Pytania
Jak moge skonfigurowac SQLite w projekcie C# uzywajac NuGet?
Aby skonfigurowac SQLite w projekcie C# uzywajac NuGet, otworz Visual Studio i stworz nowa aplikacje konsolowa. Przejdz do Menedzera Pakietow NuGet, wyszukaj 'SQLite' i zainstaluj pakiet. To zintegrowa biblioteki SQLite z Twoim projektem do operacji bazodanowych.
Jakie sa korzysci z uzywania SQLite w aplikacjach C#?
SQLite to lekki, bezserwerowy silnik bazodanowy przechowujacy dane w pojedynczym pliku, co czyni go idealnym rozwiazaniem dla aplikacji potrzebujacych prostego i efektywnego rozwiazania bazodanowego bez zlozonosci tradycyjnego systemu bazodanowego.
Jak polaczyc sie z baza danych SQLite w C#?
Mozesz polaczyc sie z baza danych SQLite w C# tworząc ciag polaczenia taki jak Data Source=mydatabase.db; i uzywajac klasy SQLiteConnection z przestrzeni nazw System.Data.SQLite do nawiazania i otwarcia polaczenia.
Jak moge wykonac operacje CRUD na bazie danych SQLite uzywajac C#?
Uzywajac polecen SQL, takich jak INSERT, SELECT, UPDATE i DELETE, mozesz wykonac operacje CRUD na bazie danych SQLite w C#. Te polecenia moga byc wykonane przy uzyciu obiektu SQLiteCommand.
Jaka role odgrywaja transakcje w SQLite?
Transakcje w SQLite pozwalaja na wykonanie wielu operacji jako jednej atomowej akcji. Mozesz rozpoczac transakcje uzywajac connection.BeginTransaction(), wykonac niezbedne operacje, a nastepnie zatwierdzic lub wycofac transakcje w zaleznosci od wyniku.
Jak moge uzyc Entity Framework z SQLite w projekcie C#?
Aby uzyc Entity Framework z SQLite, zainstaluj niezbedny pakiet Entity Framework za posrednictwem NuGet, zdefiniuj swoje klasy encji i stworz klase DbContext. Ta konfiguracja pozwala na mapowanie obiektowo-relacyjne, upraszczajac interakcje z baza danych w Twoim projekcie C#.
Jak moge generowac dokumenty PDF z danych bazy danych uzywajac C#?
Za pomoca IronPDF mozesz generowac dokumenty PDF z danych bazy danych w C# poprzez konwersje HTML do PDF. To pozwala na tworzenie dobrze sformatowanych raportow PDF z danych przechowywanych w Twojej bazie danych SQLite.
Jakie narzedzia moga ulepszyc rozwoj aplikacji bazodanowych w C#?
Iron Suit, ktory zawiera narzedzia takie jak IronPDF, IronXL, IronOCR i IronBarcode, ulepsza rozwoj aplikacji bazodanowych w C# oferujac funkcjonalnosci takie jak tworzenie PDF, manipulacja plikami Excel, rozpoznawanie tekstu i generowanie kodow kreskowych.




