Installasjon
SQLite3 kan integreres med Perl bruker Perl DBI modulen, som er en database tilgang modul for Perl programmeringsspråk. Den definerer et sett av metoder, variabler og konvensjoner som gir en standard database grensesnitt
Her er enkle trinn for å installere DBI modul på Linux /UNIX-maskin.
$ Wget http: //search.cpan .org /CPAN /forfattere /id /T /TI /Timb /DBI-1.625.tar.gz $ tar xvfz DBI-1.625.tar.gz $ cd DBI-1,625 $ perl Makefile.PL $ gjøre $ make install
Hvis du trenger å installere SQLite driver for DBI, så det kan installeres slik:
$ 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 $ gjøre $ make install
DBI Interface API
Følgende er viktige DBI rutiner som kan være nok kravet til å jobbe med SQLite database fra Perl program. Hvis du er ute etter en mer sofistikert program, så kan du se nærmere på Perl DBI offisiell dokumentasjon.
SNAPI &Beskrivelse1
DBI-> koble ($ data_source, "", "", \\% attr )
Oppretter en database tilkobling, eller økt, til den forespurte $ data_source. Returnerer en database håndtak objekt hvis tilkoblingen lykkes
Datakilde har formen som:. DBI: SQLite: dbnavn = 'test.db'
SQLite er SQLite drivernavn og test.db er nevne av SQLite database fil. Hvis filnavnet er gitt som ': minne:'
, vil det skape en in-memory database i RAM som varer bare for varigheten av økten
Hvis filnavnet er selve apparatet fil. navn, da den forsøker å åpne databasefilen ved hjelp av sin verdi. Hvis ingen fil med det navnet finnes da en ny database fil med det navnet blir opprettet.
Du holde andre og tredje paramter som tomme strenger og siste parameter er å passere ulike attributter som vist nedenfor i eksempelet.
2
$ dbh-> gjøre ($ sql)
Denne rutinen forbereder og utfører en enkelt SQL-setning. Returnerer antall rader berørt eller undef på feil. En retur verdi på -1 betyr antall rader er ikke kjent, ikke aktuelt eller ikke tilgjengelig. Her $ DBH er et håndtak som returneres av DBI-> koble () kall.
3
$ dbh-> forberede ($ sql)
Denne rutinen forbereder en uttalelse for senere gjennomføring av databasemotor og returnerer en referanse til en uttalelse håndtak objekt.
4
$ sth-> utføre ()
Denne rutinen utfører hva behandlingen er nødvendig for å utføre forberedt uttalelse. En udef returneres hvis det oppstår en feil. En vellykket utføre alltid returnerer true uavhengig av antall rader berørt. Her $ sth er en uttalelse håndtak returnert av $ dbh-> forberede ($ sql) samtale.
5
$ sth-> fetchrow_array ()
Denne rutinen hentinger neste rad med data og returnerer det som en liste som inneholder feltverdier. Null felt er returnert som undef verdiene i listen.
6
$ DBI :: err
Dette tilsvarer $ h-> err, der $ h er noen av håndtaket typer som $ DBH, $ sth, eller $ DRH. Dette returnerer innfødte databasemotor feilkode fra den siste driveren metode som kalles.
7
$ DBI :: errstr
Dette tilsvarer $ h-> errstr, der $ h er noen av håndtaket typer som $ DBH, $ sth, eller $ DRH. Dette returnerer den innfødte databasemotor feilmelding fra siste DBI metode som kalles.
8
$ dbh-> frakobling ()
Denne rutinen lukker en databasetilkobling tidligere åpnet av et kall til DBI-> koble ().
Koble til Database
Etter Perl-kode viser hvordan du kobler til en eksisterende database. .! Hvis databasen ikke eksisterer, så vil det bli opprettet, og til slutt et databaseobjekt vil bli returnert
# /usr /bin /perluse DBI, bruke streng; min $ driver = "SQLite"; min $ database = "test.db"; min $ DSN = "DBI: $ driver: dbnavn = $ database"; min $ userid = ""; min $ password = ""; min $ DBH = DBI-> koble ($ DSN, $ brukerid, $ passord, {RaiseError => 1}) eller dø $ DBI :: errstr; print "Åpnet database vellykket \\ n";
Nå, la oss kjøre over programmet til å lage vår database test.db i gjeldende katalog. Du kan endre din vei som per kravet. Hold koden ovenfor i sqlite.pl fil og kjøre den som vist nedenfor. Hvis databasen er opprettet, så vil det gi følgende melding:
$ chmod + x sqlite.pl $ ./sqlite.plOpen database hell
Lag en tabell
Etter Perl-programmet brukt å opprette en tabell i tidligere opprettet database:
# /usr /bin /perluse DBI, bruke streng; min $ driver = "SQLite"; min $ database = "test.db"; min $ DSN = "DBI: $ driver: dbnavn = $ database "; min $ userid =" "; min $ password =" "; min $ DBH = DBI-> koble ($ DSN, $ brukerid, $ passord, {RaiseError => 1}) eller dø $ DBI :: errstr; print "Åpnet database vellykket \\ n"; min $ stmt = qq (CREATE TABLE COMPANY (ID INT PRIMARY KEY NOT NULL, NAME TEKST NOT NULL, AGE INT NOT NULL, ADRESSE CHAR (50), LØNN REAL );); min $ rv = $ dbh-> gjøre ($ stmt); if ($ rv frakobling ();
Når programmet ovenfor er utført, vil det skape COMPANY tabellen i test.db og det vil vise følgende meldinger:
Åpnet database successfullyTable opprettet
NB:
i tilfelle du se følgende feil i noen av operasjonen:
DBD :: SQLite :: st utføre mislyktes: ikke en feil (21) på dbdimp.c linje 398
I dette tilfellet vil du ha åpent dbdimp.c fil tilgjengelig i DBD-SQLite installasjon og finne ut sqlite3_prepare ()
funksjon og endre sin tredje argument til -1 i stedet for 0. Endelig installere DBD :: SQLite bruker foreta Hotell og gjøre make install
for å løse problemet.
Sett Operation
Etter Perl program viser hvordan vi kan opprette poster i selskapet vårt bord opprettet i eksempelet ovenfor:
# /usr /bin /perluse DBI, bruke streng; min $ driver = "SQLite"; min $ database = "test.db"; min $ DSN = "DBI: $ driver: dbnavn = $ database"; min $ userid = ""; min $ password = ""; min $ DBH = DBI-> koble ($ DSN, $ brukerid, $ passord, {RaiseError = > 1}) eller dø $ DBI :: errstr; print "Åpnet database vellykket \\ n"; min $ stmt = qq (INSERT INTO COMPANY (ID, navn, alder, adresse, LØNN) VALUES (1, 'Paul', 32 , "California", 20000.00)); min $ rv = $ dbh-> gjøre ($ stmt) eller dø $ DBI :: errstr; $ stmt = qq (INSERT INTO COMPANY (ID, navn, alder, adresse, lønn) VERDIER (2, 'Allen', 25 'Texas', 15000.00)); $ rv = $ dbh-> gjøre ($ stmt) eller dø $ DBI :: errstr; $ stmt = qq (INSERT INTO COMPANY (ID, navn, alder, adresse, LØNN) VALUES (3, 'Teddy', 23 'Norge', 20000.00)); $ rv = $ dbh-> gjøre ($ stmt) eller dø $ DBI :: errstr; $ stmt = qq (INSERT INTO COMPANY (ID, navn, alder, adresse, LØNN) VERDIER (4, "Mark", 25 ", Rich-Mond", 65000.00);); $ rv = $ dbh-> gjøre ($ stmt) eller dø $ DBI :: errstr; print "Records opprettet \\ n"; $ dbh-> frakobling ();
Når programmet ovenfor er utført, vil det skape gitt poster i COMPANY bordet og vil vise følgende to linjer:
Åpnet database successfullyRecords opprettet
Velg operasjon
Etter Perl program viser hvordan vi kan hente og vise poster fra vårt selskap bord opprettet i eksempelet ovenfor:
# /usr /bin /perluse DBI, bruke streng; min $ driver = "SQLite"; min $ database = "test.db"; min $ DSN = "DBI: $ driver: dbnavn = $ database"; min $ userid = ""; min $ password = ""; min $ DBH = DBI-> koble ($ DSN, $ brukerid, $ passord, {RaiseError => 1}) eller dø $ DBI :: errstr; print "Åpnet database vellykket \\ n"; min $ stmt = qq (SELECT id, navn, adresse, lønn fra selskapet;); min $ sth = $ dbh-> forberede ($ stmt); min $ rv = $ sth-> utføre () eller dø $ DBI :: errstr; if ($ rv fetchrow_array () ) {print "ID =". $ rad [0]. "\\ n"; print "name =". $ rad [1] "\\ n".; print "ADRESSE =". $ rad [2] "\\ n".; skrive ut "lønn =". . $ rad [3] "\\ n \\ n";} print "Operation gjort med suksess \\ n"; $ dbh-> frakobling ();
Når programmet ovenfor er utført, vil det produsere følgende resultat:
Åpnet database successfullyID = 1NAME = PaulADDRESS = CaliforniaSALARY = 20000ID = 2NAME = AllenADDRESS = TexasSALARY = 15000ID = 3NAME = TeddyADDRESS = NorwaySALARY = 20000ID = 4NAME = MarkADDRESS = Rich-MondSALARY = 65000Operation gjort med hell
UPDATE Operation
Etter Perl kode viser hvordan vi kan bruke UPDATE statement å oppdatere posten og deretter hente inn og vise oppdaterte poster fra vårt selskap bordet:!
# /usr /bin /perluse DBI, bruke streng; min $ driver = "SQLite"; min $ database = "test.db"; min $ DSN = "DBI: $ driver: dbnavn = $ database"; min $ userid = ""; min $ password = ""; min $ DBH = DBI-> koble ($ DSN, $ brukerid, $ passord, {RaiseError => 1}) eller dø $ DBI :: errstr; print "Åpnet database vellykket \\ n"; min $ stmt = qq (UPDATE selskapet satt LØNN = 25000.00 hvor ID = 1;); min $ rv = $ dbh-> trenger ($ stmt) eller dø $ DBI :: errstr; if ($ rv forberede ($ stmt); $ rv = $ sth-> utføre () eller dø $ DBI :: errstr; if ($ rv fetchrow_array ()) {print "ID =". $ rad [0]. "\\ n"; print "name =". $ rad [1] "\\ n".; print "ADRESSE =". $ rad [2] "\\ n".; skrive ut "lønn =". . $ rad [3] "\\ n \\ n";} print "Operation gjort med suksess \\ n"; $ dbh-> frakobling ();
Når programmet ovenfor er utført, vil det produsere følgende resultat:
Åpnet database successfullyTotal antall rader oppdatert: 1ID = 1NAME = PaulADDRESS = CaliforniaSALARY = 25000ID = 2NAME = AllenADDRESS = TexasSALARY = 15000ID = 3NAME = TeddyADDRESS = NorwaySALARY = 20000ID = 4NAME = MarkADDRESS = Rich-MondSALARY = 65000Operation gjort med hell
slettingen
Etter Perl kode viser hvordan vi kan bruke DELETE-setningen til å slette posten og deretter hente og vise resterende poster fra vårt selskap bordet!
# /usr /bin /perluse DBI, bruke streng; min $ driver = "SQLite"; min $ database = "test.db"; min $ DSN = "DBI: $ driver: dbnavn = $ database"; min $ userid = ""; min $ password = ""; min $ DBH = DBI-> koble ($ DSN, $ brukerid, $ passord, {RaiseError => 1}) eller dø $ DBI :: errstr; print "Åpnet database vellykket \\ n"; min $ stmt = qq (DELETE fra selskap der ID = 2); min $ rv = $ dbh-> gjøre ($ stmt) eller dø $ DBI :: errstr; if ($ rv forberede ($ stmt); $ rv = $ sth-> utføre () eller dø $ DBI: : errstr; if ($ rv fetchrow_array ()) {print "ID =". $ rad [0]. "\\ n"; print "name =". $ rad [1] "\\ n".; print "ADRESSE =". $ rad [2] "\\ n".; skrive ut "lønn =". . $ rad [3] "\\ n \\ n";} print "Operation gjort med suksess \\ n"; $ dbh-> frakobling ();
Når programmet ovenfor er utført, vil det produsere følgende resultat:
Åpnet database successfullyTotal antall rader slettet: 1ID = 1NAME = PaulADDRESS = CaliforniaSALARY = 25000ID = 3NAME = TeddyADDRESS = NorwaySALARY = 20000ID = 4NAME = MarkADDRESS = Rich-MondSALARY = 65000Operation gjort med suksess