Prima di poter eseguire query e altre dichiarazioni su un database , lo script ha bisogno di stabilire una connessione. Importare il modulo DBI nello script con " uso DBI " :
use DBI ;
- > DBI funzione connect si connette a un database e restituisce un handle di database . Stabilire una connessione a un database locale , fornendo il nome del vostro database nel parametro sorgente e il nome utente e la password per l' utente MySQL script utilizzeranno per la connessione :
my $ dbh = DBI - > , connect ( ' DBI : mysql : dbname ', ' utente' , 'password' ) or die " connessione non riuscita: $ DBI :: errstr " ;
connessione a un database remoto è simile a una connessione locale fornendo l' indirizzo del computer remoto nel parametro source . Nell'esempio seguente , l'attributo RaiseError è impostato per segnalare gli errori tramite die ( ) in luogo del " or die" errore manuale clausola di verifica nell'esempio precedente . L'attributo PrintError è disabilitato . PrintError segnala automaticamente gli errori tramite warn ( ) quando è abilitata
my $ dbh = DBI - > connect ( ' DBI : mysql : dbname ; host = db.server.edu ' . , ' Utente' , 'password' , { PrintError = > 0 , RaiseError = > 1} ) .
Prima di uscire dallo script , disconnettersi dal database utilizzando la funzione di disconnessione
$ dbh - > disconnect ( ) ;
query di base
l'affermazione più comune eseguito su un database è l'istruzione SELECT . Creare un handle di istruzione chiamando la funzione prepare con l'istruzione SELECT . Per esempio, questo SELEZIONA interrogherà un elenco tavolo di persone per il primo campo nome per tutte le voci in cui il cognome è " Johnson " :
my $ sth = $ dbh - > prepare ( " SELECT FROM cognome persone WHERE cognome = ' Johnson ' ");
eseguire l'istruzione :
$ sth - > execute ();
Recupera una riga di dati alla volta, come un hash e stampare i risultati : print
"Query per cognome Johnson : \\ n"; while ( my $ resultrow = $ sth - > fetchrow_hashref ( ) ) {my $ fn = $ resultrow - > { cognome }; print " $ fn \\ n"; }
Ci sono diverse funzioni per recuperare i risultati della query , come fetchrow_array per andare a prendere il ferro successivo come un array e fetchall_hashref a prendere tutti i risultati in una sola volta in un
hash . Usare segnaposti
segnaposto può essere utilizzata nella dichiarazione funzione di preparare. Questo è utile in script interattivi in cui i valori dei filtri di query vengono forniti dall'utente , in particolare se un loop consente all'utente di inviare query multiple prima di uscire.
Per esempio , il segnaposto ( il punto interrogativo ) è il luogo in cui sarà fornito l'input dell'utente quando viene eseguita l'istruzione :
my $ sth = $ dbh - > prepare ( ' SELECT * FROM persone WHERE cognome = ?') or die " errore di dichiarazione:" . $ dbh - > errstr ;
Un ciclo while ripetutamente richiede all'utente un cognome : print
"Cerca il cognome : " ; while ( $ cognome = < > ) { chomp $ cognome , i miei risultati di @ ;
La dichiarazione preparata in precedenza viene eseguito , con $ cognome fornito come parametro. Questo parametro verrà inserito l'istruzione della query al posto del segnaposto punto interrogativo :
$ sth - > execute ( $ cognome ) or die " errore di dichiarazione:" . $ sth - > errstr ;
I risultati , se del caso , vengono stampati :
if ($ sth -> file == 0 ) {print " Non ci sono partite per ` $ cognome '\\ n \\ n "; . }
mentre ( @ results = $ sth - > fetchrow_array ( ) ) {my $ Nome = $ risultati [1 ] ; la mia età $ = $ risultati [3 ] ; print " $ cognome $ cognome ( $ età) \\ n"; }
l' handle di istruzione è riordinato con il metodo di finitura , e il ciclo continua :
$ sth - > finitura ; print " Cerca il cognome : ";}
aggiunta, aggiornamento ed eliminazione di record
aggiornamenti , inserimenti ed eliminazioni possono essere eseguite semplicemente utilizzando la funzione do . Per esempio :
$ dbh - > do ( " INSERT INTO persone ( nome, cognome , età) values (' Bob ', ' Johnson ' , 32 )"); $ dbh - > do ( " UPDATE persone impostare Nome = ' Robert' dove = Campi " , undef , " Bob ? " ) ; $ dbh - > do ( " DELETE FROM persone WHERE cognome = ' Johnson ' ");
costruzione e gestione di un database
funzioni di amministrazione del database
vengono eseguiti con la funzione func utilizzando gestire il database ottenuto dalla connessione :
$ dbh - > func ( " createdb " , $ dbname , 'admin '); $ dbh - > func ( " dropdb " , $ dbname , 'admin ');
Il server può anche essere ricaricato e arrestato. Questa funzionalità è utile per semplificare e automatizzare le attività di amministrazione dei sistemi di database . Privilegi sufficienti sono necessari per queste azioni .
Tabella CREATE DATABASE e ALTER può essere eseguita con la funzione do . Ad esempio , l'istruzione seguente crea la tabella persone :
$ dbh - > do ( " CREATE TABLE persone ( id INT NOT NULL AUTO_INCREMENT PRIMARY KEY , Nome VARCHAR ( 50 ) , cognome VARCHAR ( 50 ) , età INT ) ");
Creazione e aggiornamento di banche dati esistenti è utile per automatizzare l'installazione di applicazioni distribuite , come forum di discussione , gallerie di foto e blog
.
Programmazione © www.354353.com