Un Blog con ASP.Net e SQLite, Prima Parte

22 agosto 2007 | Sviluppo Web | Nessun Commento.

Questo tutorial è diviso in tre parti distinte:

SQLite (http://www.sqlite.org) è un motore di database open source che, sebbene poco conosciuto e spesso sottovalutato, vanta alcune caratteristiche uniche:

  • il database è interamente contenuto in un singolo file e non richiede quindi alcuna installazione, oltre ad essere indipendente dal sistema operativo utilizzato. Per chi ha il proprio sito in hosting è una scelta economica e di immediata realizzazione;
  • è più veloce di altri database (ad es. MySql);
  • sono disponibili implementazioni per diversi linguaggi tra cui C, PHP e ASP.Net.

In particolare per ASP.Net mi sono trovato molto bene con la libreria System.Data.SQLite (open source anch’essa e reperibile qui: http://sqlite.phxsoftware.com). Questa libreria implementa completamente il modello dati di ADO.Net e fornisce supporto anche all’interno di Visual Studio (o Visual Web Developer Express, che utilizzerò in questi interventi) in fase di Design.

Il progetto di esempio che realizzeremo è molto semplice e si compone di due pagine: default.aspx, che mostra gli interventi, e admin.aspx, che ne permette invece l’inserimento.

Creazione del progetto

Per cominciare è necessario scaricare la libreria System.Data.SQLite da qui. Vi consiglio la versione con installazione automatica, durante la quale potrete anche abilitare il plug-in all’interno di Visual Studio, operazione che consiglio di eseguire.

Una volta terminata l’installazione, aprite Visual Web Developer Express e dal menu File selezionate Nuovo Sito scegliendo come linguaggio Visual Basic.

Cercate ora la cartella dove avete installato System.Data.SQLite (nel mio caso C:\Program Files (x86)\SQLite.NET) e, dalla sottocartella bin, copiate il file System.Data.SQLite.DLL nella cartella Bin del progetto.
La configurazione è già terminata!

Il database

Per creare e modificare il database e le tabelle sono disponibili su internet molti strumenti sia a pagamento che gratuiti. Tra i primi il migliore che ho provato è sicuramente Sqlite Maestro (reperibile qui), mentre tra i secondi mi sono trovato particolarmente bene con Sqliteman (http://vanek.opensuse.cz). Per creare il nostro database utilizzerò proprio quest’ultimo software.
Prima di proseguire è bene fare una premessa: l’uso di questi programmi serve soprattutto per semplicizzare e velocizzare le operazioni di gestione del db, tuttavia avremmo anche potuto utilizzare query manuali dal file Admin.aspx e il risultato sarebbe stato lo stesso.

Una volta scaricato ed installato Sqliteman, dal menu File scegliete New e salvate il nuovo database, come blog.db, all’interno della cartella App_Data del progetto.
Dal menu Database selezionate Create Table e nella finestra di dialogo che si aprirà fate clic sul tab Advanced (SQL), inserendo la seguente query:

CREATE TABLE "Interventi" (
    "IDIntervento" INTEGER PRIMARY KEY AUTOINCREMENT,
    "Titolo" varchar(255),
    "Data" datetime,
    "Testo" text,
    "Categoria" INTEGER
);

Ripetete la stessa procedura ed inserite la query:

CREATE TABLE "Categorie" (
    "IDCategoria" INTEGER PRIMARY KEY AUTOINCREMENT,
    "NomeCategoria" VARCHAR(70)
);

Inseriamo quindi anche un utente/amministratore di prova (nome utente: admin, password: testtest1):

INSERT INTO Users VALUES ('79cea9d5-8746-4b53-831f-517a57aeb49c', 'admin', 'ExampleBlog', 'test@test.it', '', 'SgyJbU45ju+AdIQN7Tnu6rsmXJg=', 'test?', 'Al+ZDwqeQR1TBYoS1aHS9t3opI4=', '1', '2007-09-09 03:08:10.0957262', '', '2007-09-09 03:08:10.0957262', '2007-09-09 03:08:10.0957262', '', '0', '2007-09-09 03:08:10.0957262', '0', '2007-09-09 03:08:10.0957262', '0', '2007-09-09 03:08:10.0957262', '', '');

Aggiornamento: sono necessarie anche le tabelle Users, UsersInRoles, Roles per gestire l’autenticazione dell’amministratore (per maggiori informazioni Membership & Role Provider per Database SQLite). Nella prima versione dell’articolo mi ero dimenticato di inserirle.

CREATE TABLE 'Roles' (
	Rolename Varchar (255) NOT NULL,
	ApplicationName varchar (255) NOT NULL
);

CREATE TABLE 'UsersInRoles' (
	Username Varchar (255) NOT NULL,
	Rolename Varchar (255) NOT NULL,
	ApplicationName Text (255) NOT NULL
);

CREATE INDEX idxUIR ON UsersInroles ( 'Username', 'Rolename', 'ApplicationName');

CREATE INDEX idxRoles ON Roles ( 'Rolename' , 'ApplicationName' );

CREATE TABLE 'Users' (
	'PKID' varchar(36) PRIMARY KEY NOT NULL default '',
	'Username' varchar(255) NOT NULL default '',
	'ApplicationName' varchar(100) NOT NULL default '',
	'Email' varchar(100) NOT NULL default '',
	'Comment' varchar(255) default NULL,
	'Password' varchar(128) NOT NULL default '',
	'PasswordQuestion' varchar(255) default NULL,
	'PasswordAnswer' varchar(255) default NULL,
	'IsApproved' tinyint(1) default NULL,
	'LastActivityDate' datetime default NULL,
	'LastLoginDate' datetime default NULL,
	'LastPasswordChangedDate' datetime default NULL,
	'CreationDate' datetime default NULL,
	'IsOnLine' tinyint(1) default NULL,
	'IsLockedOut' tinyint(1) default NULL,
	'LastLockedOutDate' datetime default NULL,
	'FailedPasswordAttemptCount' int(11) default NULL,
	'FailedPasswordAttemptWindowStart' datetime default NULL,
	'FailedPasswordAnswerAttemptCount' int(11) default NULL,
	'FailedPasswordAnswerAttemptWindowStart' datetime default NULL
);

Bene! A questo punto la configurazione del database è completata e le tabelle sono pronte per l’inserimento dei dati tramite la pagina di amministrazione. Vedremo come crearla nel prossimo intervento.Vai alla seconda parte del tutorial!