Najlepszy samouczek SQLite - Perl W 2024 r. W tym samouczku możesz dowiedzieć się zainstalować,DBI interfejsu API,Połączenia z bazą danych,Tworzenie tabeli,operacja INSERT,operacje SELECT,operacja UPDATE,operacja usuwania,
SQLite3 można użyć modułu Perl DBI integrację Perl. Perl DBI jest moduł dostępu do bazy danych języka programowania Perl. To definiuje zestaw metod, zmiennych i zasady zapewniają standardowy interfejs bazy danych.
Poniżej przedstawiono kilka prostych czynności, aby zainstalować moduł DBI na maszynach 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 $ Marka $ Make install
Jeśli trzeba zainstalować sterownik SQLite DBI można następnie zainstalować, wykonując następujące kroki:
$ 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 $ Marka $ Make install
Poniżej przedstawiono ważny program DBI do swoich potrzeb za pomocą bazy danych SQLite w programach Perla. Jeśli potrzebujesz więcej informacji, zapoznaj się z oficjalnej dokumentacji Perl DBI.
序号 | API & 描述 |
---|---|
1 | DBI->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() 打开的数据库连接。 |
Poniższy kod Perl pokazuje jak podłączyć do istniejącej bazy danych. Jeśli baza danych nie istnieje, zostanie utworzony, a na końcu zwraca obiekt bazy danych.
#! / Usr / bin / perl używać DBI; use strict; moja $ driver = "SQLite"; moja $ baza = "test.db"; moja $ DSN = "DBI: $ kierowcy: dbname = $ database"; moja $ userid = ""; moja $ password = ""; Mój $ dbh = DBI-> connect ($ dsn, $, $ userid hasło {raiseError => 1}) or die $ DBI :: errstr; print "Otwarty bazie pomyślnie \ n";
A teraz uruchomić powyższy program, tworzyć naszątest.db bazy danych w bieżącym katalogu.Można zmienić ścieżkę w miarę potrzeb. Zapisz powyższy kod do sqlite.pl plik i naciśnij pokazany jest wykonywana w następujący sposób. Jeśli baza danych jest utworzona pomyślnie, wyświetli się poniższy komunikat:
$ Chmod + x sqlite.pl $ ./sqlite.pl Otwarcie bazy danych pomyślnie
Poniższy kod Perl fragment zostaną wykorzystane do tworzenia tabeli w wcześniej utworzonej bazy danych:
#! / Usr / bin / perl używać DBI; use strict; moja $ driver = "SQLite"; moja $ baza = "test.db"; moja $ DSN = "DBI: $ kierowcy: dbname = $ database"; moja $ userid = ""; moja $ password = ""; Mój $ dbh = DBI-> connect ($ dsn, $, $ userid hasło {raiseError => 1}) or die $ DBI :: errstr; print "Otwarty bazie pomyślnie \ n"; moja $ stmt = qq (create table COMPANY (ID INT PRIMARY KEY NOT NULL, NAZWA TEXT NOT NULL, AGE INT NOT NULL, CHAR ADDRESS (50), WYNAGRODZENIE Real);); moja $ rv = $ dbh-> do ($ stmt); if ($ rv <0) { print $ DBI :: errstr; } Else { print "Tabela utworzona pomyślnie \ n"; } $ Dbh-> disconnect ();
Jeżeli powyższa procedura tworzy tabelę firma wtest.db i wyświetla się komunikat pokazany poniżej:
Otwarty w bazie powodzeniem Tabela została utworzona pomyślnie
UWAGA: W przypadku wystąpienia błędu w następujący każdej operacji: w przypadku widać po błędzie w dowolnej operacji:
DBD :: SQLite :: st execute nie powiodło się: nie jest to błąd (21) w wierszu dbdimp.c 398
W tym przypadku masz otwarte zainstalowany w dostępnym pliku dbdimp.c DBD-SQLite, znaleźćsqlite3_prepare funkcji (),i to jest trzeci parametr 0 -1. Wreszcie, stosowaniemake i make install,aby zainstalować DBD :: SQLite, można rozwiązać ten problem. w tym przypadku trzeba będzie otwarty dbdimp.c pliku dostępnego w instalacji DBD-SQLite i dowiedzieć się sqlite3_prepare () i zmienić jej trzeci argument do -1 zamiast 0. Ostatecznie zainstalować DBD :: SQLite używając zrobić i zrobić make install, aby rozwiązać problem.
Poniższy Perl program pokazuje, jak tworzyć rekordy w tabeli Spółka utworzyła powyżej:
#! / Usr / bin / perl używać DBI; use strict; moja $ driver = "SQLite"; moja $ baza = "test.db"; moja $ DSN = "DBI: $ kierowcy: dbname = $ database"; moja $ userid = ""; moja $ password = ""; Mój $ dbh = DBI-> connect ($ dsn, $, $ userid hasło {raiseError => 1}) or die $ DBI :: errstr; print "Otwarty bazie pomyślnie \ n"; moja $ stmt = qq (INSERT INTO Company (id, nazwisko, wiek, adres, wynagrodzenia) Wartości (1, 'Paul', 32 'California', 20000.00)); moja $ rv = $ dbh-> do ($ stmt) or die $ DBI :: errstr; $ Stmt = qq (INSERT INTO Company (id, nazwisko, wiek, adres, wynagrodzenia) WARTOŚCI (2, 'Allen', 25 'Texas', 15000.00)); $ Rv = $ dbh-> do ($ stmt) or die $ DBI :: errstr; $ Stmt = qq (INSERT INTO Company (id, nazwisko, wiek, adres, wynagrodzenia) VALUES (3, "Miś", 23 ", Norwegii, 20000.00)); $ Rv = $ dbh-> do ($ stmt) or die $ DBI :: errstr; $ Stmt = qq (INSERT INTO Company (id, nazwisko, wiek, adres, wynagrodzenia) VALUES (4 'Mark', 25 'Rich-Mond', 65000.00);); $ Rv = $ dbh-> do ($ stmt) or die $ DBI :: errstr; print "Rekordy utworzone pomyślnie \ n"; $ Dbh-> disconnect ();
Powyższy program jest wykonywany, to zostanie utworzony w tabeli Spółki za dany zapis i wyświetla następujące dwa wiersze:
Otwarty w bazie powodzeniem Rekordy utworzony pomyślnie
Poniższy Perl program pokazuje, jak uzyskać z tabeli Spółka utworzyła wcześniej i wyświetla zapis:
#! / Usr / bin / perl używać DBI; use strict; moja $ driver = "SQLite"; moja $ baza = "test.db"; moja $ DSN = "DBI: $ kierowcy: dbname = $ database"; moja $ userid = ""; moja $ password = ""; Mój $ dbh = DBI-> connect ($ dsn, $, $ userid hasło {raiseError => 1}) or die $ DBI :: errstr; print "Otwarty bazie pomyślnie \ n"; moja $ stmt = qq (SELECT id, nazwisko, adres, wynagrodzenie od spółki); my $ sth = $ dbh-> prepare ($ stmt); moja $ rv = $ sth-> execute () or die $ DBI :: errstr; if ($ rv <0) { print $ DBI :: errstr; } while (moim @row = $ sth-> fetchrow_array ()) { print "ID =" $ row [0] "\ n" pl; . Drukuj "name =" $ row [1] "\ n" .; . Drukuj "address =" $ row [2] "\ n" .; . Drukuj "Pensja =" $ row [3] "\ n \ n" .; } print "Operacja odbywa się pomyślnie \ n"; $ Dbh-> disconnect ();
Gdy powyższy program jest wykonywany, pojawia się następujące wyniki:
Otwarty w bazie powodzeniem ID = 1 NAME = Paul Address = California Pensja = 20000 ID = 2 NAME = Allen Address = Texas Pensja = 15000 ID = 3 NAME = Teddy Address = Norwegii Pensja = 20000 ID = 4 NAME = Mark Address = Rich-Mond Pensja = 65000 Operacja odbywa się pomyślnie
Poniższy kod pokazuje jak Perl użyć instrukcji UPDATE zaktualizować wszystkie rekordy, a następnie uzyskać z tabeli Spółka i wyświetlić zaktualizowaną rekord:
#! / Usr / bin / perl używać DBI; use strict; moja $ driver = "SQLite"; moja $ baza = "test.db"; moja $ DSN = "DBI: $ kierowcy: dbname = $ database"; moja $ userid = ""; moja $ password = ""; Mój $ dbh = DBI-> connect ($ dsn, $, $ userid hasło {raiseError => 1}) or die $ DBI :: errstr; print "Otwarty bazie pomyślnie \ n"; moja $ stmt = qq (AKTUALIZACJA COMPANY ustawić się wynagrodzenie = 25000.00 gdzie id = 1); moja $ rv = $ dbh-> do ($ stmt) or die $ DBI :: errstr; if ($ rv <0) { print $ DBI :: errstr; } Else { print "Całkowita liczba wierszy aktualizacja: $ rv \ n"; } $ Stmt = qq (SELECT id, nazwa, adres, wynagrodzenie od spółki); my $ sth = $ dbh-> prepare ($ stmt); $ Rv = $ sth-> execute () or die $ DBI :: errstr; if ($ rv <0) { print $ DBI :: errstr; } while (moim @row = $ sth-> fetchrow_array ()) { print "ID =" $ row [0] "\ n" pl; . Drukuj "name =" $ row [1] "\ n" .; . Drukuj "address =" $ row [2] "\ n" .; . Drukuj "Pensja =" $ row [3] "\ n \ n" .; } print "Operacja odbywa się pomyślnie \ n"; $ Dbh-> disconnect ();
Gdy powyższy program jest wykonywany, pojawia się następujące wyniki:
Otwarty w bazie powodzeniem Łączna liczba wierszy aktualizacja: 1 ID = 1 NAME = Paul Address = California Pensja = 25000 ID = 2 NAME = Allen Address = Texas Pensja = 15000 ID = 3 NAME = Teddy Address = Norwegii Pensja = 20000 ID = 4 NAME = Mark Address = Rich-Mond Pensja = 65000 Operacja odbywa się pomyślnie
Poniższy kod Perl pokazuje, jak korzystać z DELETE usuwa wszelkie rekordy, a następnie pobierane z tabeli Spółka i wyświetla pozostały do nagrywania:
#! / Usr / bin / perl używać DBI; use strict; moja $ driver = "SQLite"; moja $ baza = "test.db"; moja $ DSN = "DBI: $ kierowcy: dbname = $ database"; moja $ userid = ""; moja $ password = ""; Mój $ dbh = DBI-> connect ($ dsn, $, $ userid hasło {raiseError => 1}) or die $ DBI :: errstr; print "Otwarty bazie pomyślnie \ n"; moja $ stmt = qq (Usuń z firmą, w której ID = 2); moja $ rv = $ dbh-> do ($ stmt) or die $ DBI :: errstr; if ($ rv <0) { print $ DBI :: errstr; } Else { print "Całkowita liczba wierszy usunięte: $ rv \ n"; } $ Stmt = qq (SELECT id, nazwa, adres, wynagrodzenie od spółki); my $ sth = $ dbh-> prepare ($ stmt); $ Rv = $ sth-> execute () or die $ DBI :: errstr; if ($ rv <0) { print $ DBI :: errstr; } while (moim @row = $ sth-> fetchrow_array ()) { print "ID =" $ row [0] "\ n" pl; . Drukuj "name =" $ row [1] "\ n" .; . Drukuj "address =" $ row [2] "\ n" .; . Drukuj "Pensja =" $ row [3] "\ n \ n" .; } print "Operacja odbywa się pomyślnie \ n"; $ Dbh-> disconnect ();
Gdy powyższy program jest wykonywany, pojawia się następujące wyniki:
Otwarty w bazie powodzeniem Łączna liczba wierszy usunięte: 1 ID = 1 NAME = Paul Address = California Pensja = 25000 ID = 3 NAME = Teddy Address = Norwegii Pensja = 20000 ID = 4 NAME = Mark Address = Rich-Mond Pensja = 65000 Operacja odbywa się pomyślnie