Latest web development tutorials

SQLite - Perl

installare

SQLite3 può utilizzare l'integrazione modulo Perl DBI Perl. modulo Perl DBI è un modulo di accesso al database Perl linguaggio di programmazione. Si definisce una serie di metodi, variabili e regole forniscono un'interfaccia database standard.

Il seguente mostra i semplici passaggi per installare il modulo DBI su macchine Linux / UNIX:

$ Wget http://search.cpan.org/CPAN/authors/id/T/TI/TIMB/DBI-1.625.tar.gz
$ Tar xvfz DBI-1.625.tar.gz
$ Cd DBI-1.625
$ Perl Makefile.PL
$ make
$ Make install

Se è necessario installare il driver SQLite DBI possono poi essere installato seguendo questi passaggi:

$ Wget http://search.cpan.org/CPAN/authors/id/M/MS/MSERGEANT/DBD-SQLite-1.11.tar.gz
$ Tar xvfz DBD-SQLite-1.11.tar.gz
$ Cd DBD-SQLite-1.11
$ Perl Makefile.PL
$ make
$ Make install

Interfaccia DBI API

Di seguito sono importante programma di DBI per soddisfare le vostre esigenze utilizzando database SQLite in programmi Perl. Se avete bisogno di ulteriori informazioni, si prega di consultare la documentazione ufficiale di Perl DBI.

序号API & 描述
1DBI->connect($data_source, "", "", \%attr)

建立一个到被请求的 $data_source 的数据库连接或者 session。如果连接成功,则返回一个数据库处理对象。

数据源形式如下所示:DBI:SQLite:dbname='test.db'。其中,SQLite 是 SQLite 驱动程序名称,test.db 是 SQLite 数据库文件的名称。如果文件名filename赋值为':memory:',那么它将会在 RAM 中创建一个内存数据库,这只会在 session 的有效时间内持续。

如果文件名 filename 为实际的设备文件名称,那么它将使用这个参数值尝试打开数据库文件。如果该名称的文件不存在,那么将创建一个新的命名为该名称的数据库文件。

您可以保留第二个和第三个参数为空白字符串,最后一个参数用于传递各种属性,详见下面的实例讲解。

2$dbh->do($sql)

该例程准备并执行一个简单的 SQL 语句。返回受影响的行数,如果发生错误则返回 undef。返回值 -1 意味着行数未知,或不适用 ,或不可用。在这里,$dbh 是由 DBI->connect() 调用返回的处理。

3$dbh->prepare($sql)

该例程为数据库引擎后续执行准备一个语句,并返回一个语句处理对象。

4$sth->execute()

该例程执行任何执行预准备的语句需要的处理。如果发生错误则返回 undef。如果成功执行,则无论受影响的行数是多少,总是返回 true。在这里,$sth 是由 $dbh->prepare($sql) 调用返回的语句处理。

5$sth->fetchrow_array()

该例程获取下一行数据,并以包含各字段值的列表形式返回。在该列表中,Null 字段将作为 undef 值返回。

6$DBI::err

这相当于 $h->err。其中,$h 是任何的处理类型,比如 $dbh、$sth 或 $drh。该程序返回最后调用的驱动程序(driver)方法的数据库引擎错误代码。

7$DBI::errstr

这相当于 $h->errstr。其中,$h 是任何的处理类型,比如 $dbh、$sth 或 $drh。该程序返回最后调用的 DBI 方法的数据库引擎错误消息。

8$dbh->disconnect()

该例程关闭之前调用 DBI->connect() 打开的数据库连接。

Connettersi al database

Il codice Perl che segue mostra come connettersi a un database esistente. Se il database non esiste, viene creato, e, infine, restituisce un oggetto di database.

#! / Usr / bin / perl

usare DBI;
use strict;

il mio autista $ = "SQLite"; 
il mio $ database = "test.db";
il mio $ DSN = "DBI: $ conducente: dbname = $ database";
il mio userid $ = "";
la mia $ password = "";
il mio $ dbh = DBI-> connect ($ dsn, $ userid, $ password, {RaiseError => 1}) 
                      o morire $ DBI :: errstr;

print "database aperto \ successo n";

Ora, proviamo ad eseguire il programma di cui sopra, creiamo la nostratest.db database nella directory corrente.È possibile modificare il percorso in base alle esigenze. Salvare il codice qui sopra per sqlite.pl file e premere mostrato viene eseguita nel modo seguente. Se è stata creata la banca dati, verrà visualizzato il messaggio riportato di seguito:

$ Chmod + x sqlite.pl
$ ./sqlite.pl
Aprire banca dati con successo

Creare una tabella

Il seguente codice Perl frammento di sarà utilizzato per creare una tabella nel database creato in precedenza:

#! / Usr / bin / perl

usare DBI;
use strict;

il mio autista $ = "SQLite";
il mio $ database = "test.db";
il mio $ DSN = "DBI: $ conducente: dbname = $ database";
il mio userid $ = "";
la mia $ password = "";
il mio $ dbh = DBI-> connect ($ dsn, $ userid, $ password, {RaiseError => 1})
                      o morire $ DBI :: errstr;
print "database aperto \ successo n";

il mio $ stmt = QQ (CREATE TABLE COMPANY
      (ID INT PRIMARY KEY NOT NULL,
       NOME TESTO NOT NULL,
       AGE INT NOT NULL,
       INDIRIZZO CHAR (50),
       STIPENDIO REAL););
il mio $ rv = $ dbh-> do ($ stmt);
if ($ rv <0) {
   print $ DBI :: errstr;
} Else {
   print "Tabella creato \ successo n";
}
$ Dbh-> disconnect ();

Quando la procedura di cui sopra, si crea tabella COMPANY intest.db e visualizza il messaggio mostrato di seguito:

database aperto con successo
Tabella creato con successo

NOTA: Se si verifica il seguente errore in qualsiasi operazione: nel caso in cui si vede seguente errore in una qualsiasi delle operazioni:

DBD :: SQLite :: st execute non riuscita: non un errore (21) alla linea dbdimp.c 398

In questo caso, è stato aperto il installato nel file dbdimp.c disponibili DBD-SQLite, trovare la funzionesqlite3_prepare (), ed è il terzo parametro 0 a -1.Infine, l'uso dimake e make installper installare DBD :: SQLite, è possibile risolvere il problema. in questo caso si avrà dbdimp.c aperto file disponibile nell'installazione DBD-SQLite e scoprire sqlite3_prepare () e cambiare il suo terzo argomento di -1 invece di 0. Infine installare DBD :: SQLite usando make e make install non per risolvere il problema.

operazione INSERT

Il seguente programma Perl mostra come creare record nella tabella società creata in precedenza:

#! / Usr / bin / perl

usare DBI;
use strict;

il mio autista $ = "SQLite";
il mio $ database = "test.db";
il mio $ DSN = "DBI: $ conducente: dbname = $ database";
il mio userid $ = "";
la mia $ password = "";
il mio $ dbh = DBI-> connect ($ dsn, $ userid, $ password, {RaiseError => 1})
                      o morire $ DBI :: errstr;
print "database aperto \ successo n";

il mio $ stmt = QQ (INSERT INTO COMPANY (ID, nome, età, indirizzo, STIPENDIO)
      VALORI (1, 'Paul', 32, 'California', 20000.00));
il mio $ rv = $ dbh-> do ($ stmt) or die $ DBI :: errstr;

$ Stmt = QQ (INSERT INTO COMPANY (ID, nome, età, indirizzo, STIPENDIO)
      VALORI (2, 'Allen', 25, 'Texas', 15000.00));
$ Rv = $ dbh-> do ($ stmt) or die $ DBI :: errstr;

$ Stmt = QQ (INSERT INTO COMPANY (ID, nome, età, indirizzo, STIPENDIO)
      VALORI (3, 'Teddy', 23 ', la Norvegia', 20000.00));
$ Rv = $ dbh-> do ($ stmt) or die $ DBI :: errstr;

$ Stmt = QQ (INSERT INTO COMPANY (ID, nome, età, indirizzo, STIPENDIO)
      VALORI (4, 'Mark', 25 ', Rich-Mond', 65000.00););
$ Rv = $ dbh-> do ($ stmt) or die $ DBI :: errstr;

print "Records creati con successo \ n";
$ Dbh-> disconnect ();

Il programma di cui sopra viene eseguito, verrà creato nella tabella Società per un determinato record, e visualizza le seguenti due righe:

database aperto con successo
Record creati con successo

operazioni SELECT

Il seguente programma Perl mostra come ottenere dal tavolo azienda ha creato in precedenza e visualizza il record:

#! / Usr / bin / perl

usare DBI;
use strict;

il mio autista $ = "SQLite";
il mio $ database = "test.db";
il mio $ DSN = "DBI: $ conducente: dbname = $ database";
il mio userid $ = "";
la mia $ password = "";
il mio $ dbh = DBI-> connect ($ dsn, $ userid, $ password, {RaiseError => 1})
                      o morire $ DBI :: errstr;
print "database aperto \ successo n";

il mio $ stmt = QQ (SELECT id, nome, indirizzo, stipendio da azienda;);
my $ sth = $ dbh-> prepare ($ stmt);
il mio $ rv = $ sth-> execute () or die $ DBI :: errstr;
if ($ rv <0) {
   print $ DBI :: errstr;
}
mentre (il mio @row = $ sth-> fetchrow_array ()) {
      print "ID =" $ row [0] "\ n" ..;
      . Stampa "name =" $ row [1] "\ n" .;
      . Stampa "ADDRESS =" $ row [2] "\ n" .;
      . Stampa "STIPENDIO =" $ row [3] "\ n \ n" .;
}
print "Operazione fatto \ successo n";
$ Dbh-> disconnect ();

Quando viene eseguito il programma precedente, produrrà i seguenti risultati:

database aperto con successo
ID = 1
NAME = Paul
INDIRIZZO = California
STIPENDIO = 20000

ID = 2
NAME = Allen
INDIRIZZO = Texas
STIPENDIO = 15000

ID = 3
NAME = Teddy
INDIRIZZO = Norvegia
STIPENDIO = 20000

ID = 4
NAME = Mark
ADDRESS = Rich-Mond
STIPENDIO = 65000

Operazione eseguita con successo

operazione UPDATE

Il codice Perl seguente mostra come utilizzare l'istruzione UPDATE per aggiornare tutti i record, quindi ottenere da tavolo COMPANY e visualizzare il record aggiornato:

#! / Usr / bin / perl

usare DBI;
use strict;

il mio autista $ = "SQLite";
il mio $ database = "test.db";
il mio $ DSN = "DBI: $ conducente: dbname = $ database";
il mio userid $ = "";
la mia $ password = "";
il mio $ dbh = DBI-> connect ($ dsn, $ userid, $ password, {RaiseError => 1})
                      o morire $ DBI :: errstr;
print "database aperto \ successo n";

il mio $ stmt = QQ (UPDATE COMPANY salario = 25000.00 dove ID = 1;);
il mio $ rv = $ dbh-> do ($ stmt) or die $ DBI :: errstr;
if ($ rv <0) {
   print $ DBI :: errstr;
} Else {
   print "Numero di righe aggiornate: $ rv \ n";
}
$ Stmt = QQ (SELECT id, nome, indirizzo, stipendio da azienda;);
my $ sth = $ dbh-> prepare ($ stmt);
$ Rv = $ sth-> execute () or die $ DBI :: errstr;
if ($ rv <0) {
   print $ DBI :: errstr;
}
mentre (il mio @row = $ sth-> fetchrow_array ()) {
      print "ID =" $ row [0] "\ n" ..;
      . Stampa "name =" $ row [1] "\ n" .;
      . Stampa "ADDRESS =" $ row [2] "\ n" .;
      . Stampa "STIPENDIO =" $ row [3] "\ n \ n" .;
}
print "Operazione fatto \ successo n";
$ Dbh-> disconnect ();

Quando viene eseguito il programma precedente, produrrà i seguenti risultati:

database aperto con successo
numero totale di righe aggiornamento: 1
ID = 1
NAME = Paul
INDIRIZZO = California
STIPENDIO = 25000

ID = 2
NAME = Allen
INDIRIZZO = Texas
STIPENDIO = 15000

ID = 3
NAME = Teddy
INDIRIZZO = Norvegia
STIPENDIO = 20000

ID = 4
NAME = Mark
ADDRESS = Rich-Mond
STIPENDIO = 65000

Operazione eseguita con successo

un'operazione DELETE

Il codice Perl seguente mostra come utilizzare l'istruzione DELETE elimina tutti i record, e poi ripreso dalla tabella COMPANY e visualizza la registrazione rimanente:

#! / Usr / bin / perl

usare DBI;
use strict;

il mio autista $ = "SQLite";
il mio $ database = "test.db";
il mio $ DSN = "DBI: $ conducente: dbname = $ database";
il mio userid $ = "";
la mia $ password = "";
il mio $ dbh = DBI-> connect ($ dsn, $ userid, $ password, {RaiseError => 1})
                      o morire $ DBI :: errstr;
print "database aperto \ successo n";

il mio $ stmt = QQ (DELETE dalla società in cui ID = 2;);
il mio $ rv = $ dbh-> do ($ stmt) or die $ DBI :: errstr;
if ($ rv <0) {
   print $ DBI :: errstr;
} Else {
   print "Numero totale di righe cancellate: $ rv \ n";
}
$ Stmt = QQ (SELECT id, nome, indirizzo, stipendio da azienda;);
my $ sth = $ dbh-> prepare ($ stmt);
$ Rv = $ sth-> execute () or die $ DBI :: errstr;
if ($ rv <0) {
   print $ DBI :: errstr;
}
mentre (il mio @row = $ sth-> fetchrow_array ()) {
      print "ID =" $ row [0] "\ n" ..;
      . Stampa "name =" $ row [1] "\ n" .;
      . Stampa "ADDRESS =" $ row [2] "\ n" .;
      . Stampa "STIPENDIO =" $ row [3] "\ n \ n" .;
}
print "Operazione fatto \ successo n";
$ Dbh-> disconnect ();

Quando viene eseguito il programma precedente, produrrà i seguenti risultati:

database aperto con successo
Numero totale di righe cancellate: 1
ID = 1
NAME = Paul
INDIRIZZO = California
STIPENDIO = 25000

ID = 3
NAME = Teddy
INDIRIZZO = Norvegia
STIPENDIO = 20000

ID = 4
NAME = Mark
ADDRESS = Rich-Mond
STIPENDIO = 65000

Operazione eseguita con successo