ASP.Net & SQLite

di: Francesco Camarlinghi     21 Novembre 2007

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

Risultato

Conclusioni

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.

Guide ASP.Net

Guida Windows Azure Code Snippets

Le migliori pratiche per far girare le applicazioni "in the cloud",...

Guida ASP.NET MVC Best Practices

Un workflow dettagliato e ricco di suggerimenti pratici per...

Guida ASP.NET Starter Kit

Un modo semplice per imparare ad utilizzare le tecnologie Microsoft...

Altre guide

Newsletter @Microsoft Dev

Ogni giovedì, direttamente nella tua e-mail: articoli, guide, tutorial e script ASP, ASP.Net, SQL server e IIS.

Iscriviti alla newsletter

Altre newsletter

Corsi in aula

Corso Progettazione database

11 Maggio 2012 a Milano
Disponibilità: 6 Posti

Amministratore di Reti Windows Server 2008

11 Giugno 2012 a Milano
Disponibilità: 5 Posti

Nessun corso previsto