- Learn
- Guida MySQL
- Connectors e API: una panoramica
Connectors e API: una panoramica
Un database server ovviamente non sarà utilizzato soltanto attraverso i suoi client, ma deve essere raggiungibile da applicazioni di vario genere. L’utilizzo più diffuso di MySQL è probabilmente quello di database per i siti e le applicazioni web; tuttavia è dotato di numerose interfacce applicative e connettori che lo rendono utilizzabile praticamente in qualsiasi contesto.
Cominceremo con una rapida carreggiata delle API, rimandandovi come al solito al manuale per una documentazione più dettagliata.
libmysqld (Embedded MySQL Server Library)
Una prima possibilità è quella di incorporare direttamente il server MySQL nell’applicazione. Ciò è possibile attraverso l’uso dell’apposita libreria libmysqld, ottenibile configurando MySQL con l’opzione –with-embedded-server (in fase di compilazione dei sorgenti). L’uso di questa libreria consente di ottenere una maggior velocità di esecuzione.
API C
Una delle interfacce applicative più ampiamente utilizzate è sicuramente quella per il linguaggio C. Si trova nella libreria mysqlclient. La maggior parte dei programmi client distribuiti con MySQL è scritta in C, quindi utilizza questa libreria per connettersi al server. Anche le altre API usano mysqlclient. Questa interfaccia consente l’utilizzo delle prepared statements (vedere oltre) e supporta anche l’esecuzione di query multiple (non con le prepared statements però).
API PHP
PHP è uno dei principali “compagni di viaggio” di MySQL, essendo un linguaggio diffusissimo per applicazioni e siti web dinamici. Esistono tre interfacce per PHP – mysql, mysqli e PDO – che verranno trattate in un capitolo successivo della guida.
API Perl
Per l’interfacciamento con Perl esiste l’interfaccia Perl
DBI, basata sul modulo DBI (interfaccia generica verso i
database) e sul driver DBD::mysql.
Questa interfaccia sostituisce la vecchia mysqlperl, da
considerare ormai obsoleta.
API C++
Per il linguaggio C++ è disponibile un Connector ufficiale, compatibile anche con JDBC 4.0. Tuttavia è ancora utilizzabile un’ulteriore libreria, anch’essa molto diffusa: MySQL++. Prima della nascita del Connector, MySQL++ era la principale opzione per l’interazione tra il DBMS e i software in C++, tanto da essere supportata dagli stessi sviluppatori di MySQL
API Python
Anche per il linguaggio Python è stato previsto un apposito Connector che si è affiancato alla libreria di terze parti MySQLdb. Documentazione in merito può essere reperita sulla documentazione ufficiale di MySQL.
API Tcl
Anche per Tcl è disponibile una semplice interfaccia chiamata MySQLtcl. La trovate a questo indirizzo.
API Eiffel
Per il linguaggio Eiffel potete trovare l’interfaccia Eiffel MySQL a questo indirizzo.
ODBC
Il Connector/ODBC (precedentemente chiamato MyODBC) offre l’accesso a MySQL mediante lo standard industriale ODBC (Open DataBase Connectivity), disponibile per diverse piattaforme ma ampiamente usato nel sistema Windows. Un suo tipico utilizzo infatti consiste nell’accedere a database disponibili su macchine Unix/Linux da piattaforme Microsoft. Dopo aver installato il Connector/ODBC è necessario configurare un DSN (Data Source Name), a patto che la macchina client disponga dei necessari permessi di accesso al server. Dettagliate informazioni possono essere ricavate sempre dalla documentazione ufficiale.
.NET
Per le applicazioni .NET è disponibile MySQL Connector/NET, un driver ADO.NET scritto in C#. Supporta tutte le novità introdotte da MySQL 4.1 in poi (stored procedures, prepared statements ecc.)
Java
Per le applicazioni Java, che utilizzano i driver JDBC, MySQL fornisce connettività attraverso MySQL Connector/J. Si tratta di driver conforme a JDBC-3.0 e JDBC-4.0 (a seconda delle versioni), ed è di “Tipo 4”, ossia è scritto in Java e comunica direttamente col server attraverso il protocollo MySQL.
Prepared statements
Facciamo un rapido accenno anche alle prepared statements, che abbiamo citato poco fa e che sono uno strumento molto utile per l’utilizzo del database da parte delle applicazioni; si tratta di una delle tante novità introdotte da MySQL nella versione 4.1.
Le prepared statements sono un modo di eseguire le istruzioni SQL dichiarando prima al server la sintassi della query con dei “segnaposto” per i valori che l’istruzione riceverà di volta in volta; di seguito l’istruzione viene eseguita inviando al server solo i valori di cui sopra. Questo modo di lavorare offre notevoli vantaggi nel caso in cui una istruzione debba essere eseguita più volte con valori diversi: infatti il parsing della query avverrà una volta sola e ciò comporta una maggiore velocità; inoltre anche la quantità di dati che viaggiano di volta in volta dal client al server risulterà minore in questo caso.
Un altro vantaggio delle prepared statements è che offrono protezione dalle SQL injection, in quanto ogni segnaposto sarà sostituito sempre da un valore e non c’è quindi la possibilità che l’introduzione di valori “maligni” alteri la struttura della query.
Le prepared statements sono concepite per essere utilizzate con le interfacce applicative, ma esiste anche la possibilità di utilizzarle direttamente con il linguaggio SQL: ciò può essere utile qualora si vogliano fare delle verifiche sul loro funzionamento oppure non si disponga di un’interfaccia applicativa che le supporta (ad es. la vecchia estensione mysql di PHP).
Vediamo alcuni semplicissimi esempi:
PREPARE stmt1 FROM ‘SELECT * FROM tabella1 WHERE campo1 = ? AND campo2 =
?’;
SET @a=5;
SET @b=’ora’;
EXECUTE stmt1 USING @a, @b;
SET @a=8;
EXECUTE stmt1 USING @a, @b;
Con la prima istruzione prepariamo la query che dovrà estrarre i dati da tabella1 in base al valore delle colonne campo1 e campo2; utilizziamo il segnaposto (il punto interrogativo) per indicare che quelli saranno i valori variabili della query. Quando eseguiremo l’istruzione quindi, alla quale abbiamo dato il nome ‘stmt1’, dovremo passare tali valori.
Con la seconda istruzione assegniamo il valore 5 alla variabile @a e il valore ‘ora’ alla variabile @b quindi eseguiamo l’istruzione che avevamo preparato in precedenza, passando tali valori che verranno sostituiti ai punti interrogativi nella query. Dopo la prima esecuzione, modifichiamo il valore di @a ed eseguiamo nuovamente la query (il valore di @b è rimasto invariato).
Naturalmente è anche possibile preparare istruzioni senza alcun parametro: in questo caso potremo richiamarle omettendo la clausola USING. Le istruzioni che è possibile preparare sono CREATE TABLE, DELETE, DO, INSERT, REPLACE, SELECT, SET, UPDATE e la maggior parte delle SHOW.
Se vuoi aggiornamenti su Database inserisci la tua email nel box qui sotto:
Compilando il presente form acconsento a ricevere le informazioni relative ai servizi di cui alla presente pagina ai sensi dell'informativa sulla privacy.
La tua iscrizione è andata a buon fine. Se vuoi ricevere informazioni personalizzate compila anche i seguenti campi opzionali:
Compilando il presente form acconsento a ricevere le informazioni relative ai servizi di cui alla presente pagina ai sensi dell'informativa sulla privacy.
I Video di HTML.it
Le novità di Windows 8: Modern UI
È stato da poco presentato il nuovo sistema operativo di Microsoft: Windows 8. Vediamone le novità in pillole, esaminando questa […]