- Programmazione » Database » MySQL - Guida, lezioni e suggerimenti per installare e utilizzare database
MySQL & ASP
In questa parte facciamo una panoramica di MySQL sotto il profilo ASP (Active Server Pages) per capire come utilizzare il database nel miglior modo, saltando le funzioni non supportate e le procedure non proprio affidabili.
Quando fate una ricerca su un qualsiasi motore di ricerca usando la parola “MySQL”, otterrete una lista enorme con la seguente accoppiata “PHP & MySQL”. La cosa non sorprende affatto, poiché MySQL viene prevalentemente utilizzato con PHP, ma se invece cercate un sito che tratti “MySQL & ASP” la cosa risulta più difficile. Ed è proprio questo che cercherò di fare in questo capitolo, quello che vedrette da qua in poi è tutto ricavato da esperienza personale, quindi non penso che possiate trovare qualcosa simile su libri o altri tutorials.
Prima di tutto, per poter utilizzare il database con una pagina ASP è necessario stabilire una connessione al database, ci sono due alternative:
- Connessione diretta
- Connessione con DSN
Connessione diretta
Con questo termine intendo specificare una connessione nella quale indicate tutti i dati direttamente nella “stringa di connessione”, per intenderci:
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.ConnectionString = "server=127.0.0.1;db=Mondo_Libro;uid=Nome_Utente;pwd=123456;driver=MySQL ODBC 3.51 Driver"
Conn.Open
Connessione con DSN
Probabilmente è quella che userete se avete una pagina in un server remoto, le cose non sono molto diverse. Dovrete indicare quasi le stesse informazioni, in questo caso i dati vengono inseriti nel momento della creazione del DSN.
In questo caso basterà indicare il nome del DSN:
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.ConnectionString = "DSN=Mondo_Libro"
Conn.Open
Problemi e soluzioni
In un script ASP ci sono diversi modi per eseguire una stessa “operazione”, la decisione sta solo al Webmaster, molto spesso usiamo un metodo perché ci piace o perché è “leggibile”, comodo, semplice, o anche perché abbiamo pigrizia di cambiare. Quando ho cominciato a usare MySQL ho dovuto abbandonare le mie abitudine (che vedrete di seguito), ho riadattato i metodi di programmazione, per cominciare, per far si che l’applicazione funzioni e poi che sia anche affidabile.
RecorCount
Il primo problema che ho riscontrato è stato con l’usatissimo RecorCount. In una applicazione ASP questa funzione del RecordSet non è solo molto utilizzata ma è anche molto essenziale.
Se tentate stampare:
Potete trovare questo come risultato (-1), anche se il RecordSet è pieno.
E’ abbastanza semplice aggirare questo inconveniente:
Questo non è l’unico problema del RecordSet, quante di volte avete creato una pagina che raccogliesse una grossa quantità di dati e che per questo fossi necessario dividere questi dati in diverse pagine? Immagino che avete usato i famosi: PageSize, AbsolutePage, PageCount e il famoso RecordCount, bene, alcuni di questi possono non funzionare affatto, rovinando tutto il lavoro di paginazione. Che fare in questo caso? Procedere in “manuale”, cioè indicando manualmente al cursore del RecordSet dove dovrà spostarsi e quanti Records dovrà visualizzare. Il discorso della paginazione manuale sarebbe un po’ troppo lungo da spiegare rischiando di andare un po’ fuori tema.
rs.AddNew & rs.UpDate
Un’altra vecchia abitudine (almeno era la mia) è quella di usare i comandi del RecordSet AddNew e Update, usando questi metodi il codice sembra ordinato e semplice da modificare, però rende anche un semplice aggiornamento del tutto inaffidabile, si possono ritrovare errori di ogni genere.
Il metodo che fino ad ora ha funzionato in modo perfetto è quello di usare il linguaggio SQL (non a caso il database si chiama MySQL).
Per tutte le volte che dovrete scrivere nel database (aggiornamenti, inserimenti o cancellazioni) vi consiglio l’utilizzo di:
- UPDATE
- INSERT
- INTODELETE
Oltre tutto questi metodi sono più veloci rispetto al classico RecordSet.
Data
Un altro piccolo problema arriva dalle colonne di tipo “data”. Come visto in precedenza le date in MySQL sono in questo formato yyyy-mm-dd se tentate di inserire una data con il classico Now() riceverete un errore simile a “Tipo non corrispondente”, sia che il vostro sistema abbia la data in dd-mm-yyyy sia che abbia in formato mm-dd-yyyy. La soluzione è quella di “montare” la data nello stesso formato di MySQL.
Questa non è da ritenersi una guida definitiva, le cose possono cambiare, magari con driver nuovi più aggiornati queste funzioni potrebbero funzionare normalmente. E poi come già detto prima sono frutto della mia esperienza, ed io non sono infallibile!