Sviluppo di Windows 10 - Database SQLite
In molte applicazioni esistono determinati tipi di dati che hanno una sorta di relazione tra loro. Questi tipi di dati, che sono difficili da memorizzare in un file, possono essere memorizzati in un database.
Se hai familiarità con i tipi di database, come SQL server o database Oracle in qualsiasi applicazione, allora è molto facile da capire SQLite database.
Cos'è SQLite?
SQLite è una libreria software che implementa un motore di database SQL transazionale autonomo, senza server, a configurazione zero.
Le caratteristiche importanti sono:
SQLite è il motore di database più diffuso al mondo.
Il codice sorgente per SQLite è Open source.
Ha avuto un grande impatto sullo sviluppo di giochi e applicazioni mobili, grazie alla sua portabilità e al suo ingombro ridotto.
Vantaggi di SQLite
I seguenti sono i vantaggi di SQLite:
- È un database molto leggero.
- È indipendente dalla piattaforma e funziona su tutte le piattaforme.
- Ha una piccola impronta di memoria.
- È affidabile.
- Non c'è bisogno di alcuna configurazione e installazione.
- Non ha dipendenze.
Usare SQLite nelle applicazioni UWP (Universal Windows Platform), è necessario seguire i passaggi indicati di seguito.
Crea una nuova app vuota di Windows universale con il nome UWPSQLiteDemo.
Vai al Toolsmenu e seleziona Estensioni e aggiornamenti. Si aprirà la seguente finestra di dialogo.
- Dopo aver selezionato Estensioni e aggiornamenti, si aprirà la seguente finestra.
Ora seleziona il file Online opzione e cerca SQLite, dal riquadro di sinistra.
Scarica e installa SQLite per Universal App Platform.
Ora vai di nuovo al menu Strumenti e seleziona NuGet Package Manager > Package Manager Console opzione di menu come mostrato di seguito.
Scrivi il seguente comando nella console di Gestione pacchetti e premi Invio per eseguire questo comando:
Install-Package SQLite.Net-PCL
Ora fai clic destro su References in Esplora soluzioni e seleziona Add References.
- Si aprirà la seguente finestra di dialogo.
Selezionare Extensions dal riquadro di sinistra sotto Universal Windows, seleziona SQLite per Universal App Platform nel riquadro centrale e fai clic su OK.
Ora sei pronto per utilizzare SQLite nelle tue applicazioni UWP.
È possibile creare un database utilizzando il codice seguente.
string path = Path.Combine(Windows.Storage.ApplicationData.
Current.LocalFolder.Path, "db.sqlite");
SQLite.Net.SQLiteConnection conn = new SQLite.Net.SQLiteConnection(new
SQLite.Net.Platform.WinRT.SQLitePlatformWinRT(), path);
Per creare un tavolo devi chiamare CreateTable metodo con oggetto nome tabella.
conn.CreateTable<Customer>();
È possibile inserire i dati nella tabella utilizzando il codice seguente.
conn.Insert(new Customer(){
Name = textBox.Text,
Age = textBox1.Text
});
Di seguito è riportato il codice per recuperare i dati dalla tabella.
var query = conn.Table<Customer>();
string id = "";
string name = "";
string age = "";
foreach (var message in query) {
id = id + " " + message.Id;
name = name + " " + message.Name;
age = age + " " + message.Age;
}
Cerchiamo di capire come creare un database, una tabella e come inserire e recuperare i dati dal database con l'aiuto di un semplice esempio. Aggiungeremo nome ed età e quindi recupereremo gli stessi dati dalla tabella. Di seguito è riportato il codice XAML in cui vengono aggiunti diversi controlli.
<Page
x:Class = "UWPSQLiteDemo.MainPage"
xmlns = "http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x = "http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local = "using:UWPSQLiteDemo"
xmlns:d = "http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc = "http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable = "d">
<Grid Background = "{ThemeResource ApplicationPageBackgroundThemeBrush}" >
<Button x:Name = "Retrieve" Content = "Retrieve" HorizontalAlignment = "Left"
VerticalAlignment = "Top" Margin = "384,406,0,0"
Click = "Retrieve_Click"/>
<Button x:Name = "Add" Content = "Add" HorizontalAlignment = "Left"
VerticalAlignment = "Top" Margin = "291,406,0,0" Click = "Add_Click"/>
<TextBlock x:Name = "textBlock" HorizontalAlignment = "Left"
TextWrapping = "Wrap" Text = "Name" VerticalAlignment = "Top"
Margin = "233,280,0,0" Width = "52"/>
<TextBox x:Name = "textBox" HorizontalAlignment = "Left" TextWrapping = "Wrap"
VerticalAlignment = "Top" Margin = "289,274,0,0" Width = "370"/>
<TextBlock x:Name = "textBlock1" HorizontalAlignment = "Left"
TextWrapping = "Wrap" Text = "Age" VerticalAlignment = "Top"
Margin = "233,342,0,0" Width = "52"/>
<TextBox x:Name = "textBox1" HorizontalAlignment = "Left" TextWrapping = "Wrap"
VerticalAlignment = "Top" Margin = "289,336,0,0" Width = "191"/>
<TextBlock x:Name = "textBlock2" HorizontalAlignment = "Left"
Margin = "290,468,0,0" TextWrapping = "Wrap"
VerticalAlignment = "Top" Width = "324" Height = "131"/>
</Grid>
</Page>
Di seguito è riportata l'implementazione C # per eventi e SQLite database.
using SQLite.Net.Attributes;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Runtime.InteropServices.WindowsRuntime;
using Windows.Foundation;
using Windows.Foundation.Collections;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Controls.Primitives;
using Windows.UI.Xaml.Data;
using Windows.UI.Xaml.Input;
using Windows.UI.Xaml.Media;
using Windows.UI.Xaml.Navigation;
// The Blank Page item template is documented at
http://go.microsoft.com/fwlink/?LinkId=402352&clcid=0x409
namespace UWPSQLiteDemo {
/// <summary>
/// An empty page that can be used on its own or navigated to within a Frame.
/// </summary>
public sealed partial class MainPage : Page {
string path;
SQLite.Net.SQLiteConnection conn;
public MainPage(){
this.InitializeComponent();
path = Path.Combine(Windows.Storage.ApplicationData.Current.LocalFolder.Path,
"db.sqlite");
conn = new SQLite.Net.SQLiteConnection(new
SQLite.Net.Platform.WinRT.SQLitePlatformWinRT(), path);
conn.CreateTable<Customer>();
}
private void Retrieve_Click(object sender, RoutedEventArgs e) {
var query = conn.Table<Customer>();
string id = "";
string name = "";
string age = "";
foreach (var message in query) {
id = id + " " + message.Id;
name = name + " " + message.Name;
age = age + " " + message.Age;
}
textBlock2.Text = "ID: " + id + "\nName: " + name + "\nAge: " + age;
}
private void Add_Click(object sender, RoutedEventArgs e){
var s = conn.Insert(new Customer(){
Name = textBox.Text,
Age = textBox1.Text
});
}
}
public class Customer {
[PrimaryKey, AutoIncrement]
public int Id { get; set; }
public string Name { get; set; }
public string Age { get; set; }
}
}
Quando il codice sopra è stato compilato ed eseguito, vedrai la seguente finestra.
Inserisci il Name e Age e fare clic su Add pulsante.
Ora fai clic sul file Retrievepulsante. Vedrai i seguenti dati sul fileText Block.
Il campo ID è un campo Chiave primaria e Incremento automatico, specificato nella classe Cliente.
[PrimaryKey, AutoIncrement]
public int Id { get; set; }