Inseriamo quindi nella funzione Page_Load le seguenti istruzioni:
Listato 2. Funzione Page_Load (C#)
protected void Page_Load(object sender, EventArgs e)
{
// Stringa di connessione.
// Il database verrà memorizzato all'interno della cartella App_Data del sito.
// Ovviamente avremmo potuto definirla anche all'interno del file Web.config
string connString = "Data Source = |DataDirectory|/test.db;";
// Creiamo la connessione
SQLiteConnection conn = new SQLiteConnection(connString);
try
{
// Apriamo la connessione
conn.Open();
// Creiamo l'oggetto SQLiteCommand, con cui
// verranno eseguite le query sul database.
SQLiteCommand cmd = new SQLiteCommand(conn);
// Creiamo la tabella Prova se non esiste
cmd.CommandText = "CREATE TABLE IF NOT EXISTS Prova (ID INTEGER PRIMARY KEY, Valore INTEGER)";
cmd.ExecuteNonQuery();
// Eliminiamo qualsiasi valore dal database
cmd.CommandText = "DELETE FROM Prova";
cmd.ExecuteNonQuery();
// Inseriamo i nuovi valori casuali nella tabella. Notate
// l'utilizzo del parametro @Testo all'interno della query.
// Visto che dobbiamo inserire 5 righe nella tabella utilizzando
// sempre la stessa query (fatta eccezione per il valore
// da inserire), l'uso di un parametro permette di mantenere
// il codice più leggibile e di aumentare notevolmente le prestazioni.
cmd.CommandText = "INSERT INTO Prova (Valore) VALUES (@Valore)";
// Creiamo il parametro
cmd.Parameters.Add("@Valore", DbType.Int32);
// Per generare i valori casuali
Random r = new Random();
// Inseriamo i valori
for (Int16 i = 0; i < 5; i++)
{
// Specifichiamo il valore casuale per il parametro
cmd.Parameters["@Valore"].Value = r.Next(1, 100);
cmd.ExecuteNonQuery();
}
// Creiamo un nuovo oggetto SQLiteCommand per leggere
// dal database.
cmd = new SQLiteCommand(conn);
cmd.CommandText = "SELECT * FROM Prova";
// Utilizziamo l'oggetto SQLiteDataReader per una lettura
// veloce dei dati.
SQLiteDataReader reader = cmd.ExecuteReader();
if (reader.HasRows)
{
// Leggiamo i dati e stampiamoli a video
while (reader.Read())
{
Response.Write("ID: " + reader.GetInt32(0) + "<br />");
Response.Write("Valore: " + reader.GetInt32(1) + "<hr />");
}
reader.Close();
}
else
{
// Non sono presenti dati, generiamo un errore
throw new Exception("Nessun dato trovato.");
}
}
catch (SQLiteException ex)
{
// Errore specifico di SQLite
Response.Write("Errore specifico di SQLite! <br />" + ex.ToString());
}
catch (Exception ex)
{
// Errore generico
Response.Write("Errore generico! <br />" + ex.ToString());
}
finally
{
// Chiudiamo la connessione al database
// Questo codice verrà eseguito comunque anche in caso di errore
// evitando quindi di lasciare connessioni aperte.
conn.Close();
}
}
Abbiamo commentato molto il codice per spiegare ogni passaggio, ma il tutto è molto simile a quanto normalmente facciamo con qualunque connettore.
Figura 1. Risultato
Abbiamo iniziato a conoscere SQLite, un motore di database molto leggero e utile per immagazzinare quantità di dati relativamente piccole, di cui sono stati evidenziati i principali pregi e difetti. È stata poi fornita una panoramica sui programmi che possiamo utilizzare per gestire i nostri archivi. In conclusione è stato introdotto il provider System.Data.SQLite per utilizzare SQLite con il .Net Framework.
E adesso? In un prossimo articolo vedremo come utilizzare SQLite per la gestione dell'autenticazione basata sul Membership provider di ASP.Net. Nel frattempo vi rimando al sito ufficiale di System.Data.SQLite, dove si possono trovare diversi tutorial all'interno del forum, e all'articolo di Peter A. Bromberg "Experimenting with SQLite and the SQLite.NET Provider" , che, nonostante non sia più molto recente, rimane sicuramente un ottimo punto di partenza per una comprensione migliore del provider ADO.Net per SQLite.
Guida Windows Azure Code SnippetsLe migliori pratiche per far girare le applicazioni "in the cloud",... |
Guida ASP.NET MVC Best PracticesUn workflow dettagliato e ricco di suggerimenti pratici per... |
Guida ASP.NET Starter KitUn modo semplice per imparare ad utilizzare le tecnologie Microsoft... |
Ogni giovedì, direttamente nella tua e-mail: articoli, guide, tutorial e script ASP, ASP.Net, SQL server e IIS.
Iscriviti alla newsletter
|
|
Corso Progettazione database11 Maggio 2012 a Milano |
|
|
Amministratore di Reti Windows Server 200811 Giugno 2012 a Milano |
|
Nessun corso previsto |