Latest web development tutorials

SQLite - Perl

memasang

SQLite3 dapat menggunakan integrasi modul Perl DBI Perl. Perl DBI modul adalah modul akses database bahasa pemrograman Perl. Ini mendefinisikan seperangkat metode, variabel dan aturan menyediakan antarmuka database standar.

Berikut ini menunjukkan langkah-langkah sederhana untuk menginstal modul DBI pada mesin 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
$ Membuat
$ Membuat install

Jika Anda perlu menginstal driver SQLite DBI kemudian dapat diinstal dengan mengikuti langkah-langkah ini:

$ 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
$ Membuat
$ Membuat install

DBI antarmuka API

Berikut ini adalah program yang penting DBI untuk memenuhi kebutuhan Anda menggunakan basis data SQLite dalam program Perl. Jika Anda memerlukan informasi lebih lanjut, silakan lihat dokumentasi resmi 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() 打开的数据库连接。

Terhubung ke database

Berikut kode Perl menunjukkan bagaimana menghubungkan ke database yang sudah ada. Jika database tidak ada, itu dibuat, dan akhirnya mengembalikan objek database.

#! / Usr / bin / perl

menggunakan DBI;
menggunakan ketat;

saya $ sopir = "SQLite"; 
saya $ database = "test.db";
saya $ dsn = "DBI: $ sopir: dbname = $ database";
saya $ userid = "";
$ Kata sandi = "";
saya $ dbh = DBI-> terhubung ($ dsn, $ userid, $ password, {RaiseError => 1}) 
                      atau mati $ DBI :: errstr;

print "Database Dibuka berhasil \ n";

Sekarang, mari kita jalankan program di atas, membuattest.db database kami di direktori saat ini.Anda dapat mengubah jalur yang diperlukan. Simpan kode di atas untuk sqlite.pl file dan tekan ditampilkan dilakukan sebagai berikut. Jika database berhasil dibuat, maka akan muncul pesan di bawah ini:

$ Chmod + x sqlite.pl
$ ./sqlite.pl
Terbuka basis data berhasil

Buat tabel

Berikut potongan kode Perl akan digunakan untuk membuat tabel dalam database yang dibuat sebelumnya:

#! / Usr / bin / perl

menggunakan DBI;
menggunakan ketat;

saya $ sopir = "SQLite";
saya $ database = "test.db";
saya $ dsn = "DBI: $ sopir: dbname = $ database";
saya $ userid = "";
$ Kata sandi = "";
saya $ dbh = DBI-> terhubung ($ dsn, $ userid, $ password, {RaiseError => 1})
                      atau mati $ DBI :: errstr;
print "Database Dibuka berhasil \ n";

saya $ stmt = qq (CREATE TABLE PERUSAHAAN
      (ID INT PRIMARY KEY NOT NULL,
       NAMA TEXT NOT NULL,
       AGE INT NOT NULL,
       ALAMAT CHAR (50),
       GAJI NYATA););
saya $ rv = $ dbh-> lakukan ($ stmt);
if ($ rv <0) {
   print $ DBI :: errstr;
} Lain {
   print "Tabel berhasil dibuat \ n";
}
$ Dbh-> disconnect ();

Ketika prosedur di atas, itu menciptakan meja PERUSAHAAN ditest.db dan menampilkan pesan di bawah ini:

database yang dibuka berhasil
Tabel berhasil dibuat

CATATAN: Jika Anda mengalami kesalahan berikut dalam operasi: jika anda melihat kesalahan berikut di setiap operasi:

DBD :: SQLite :: st mengeksekusi gagal: tidak error (21) pada baris dbdimp.c 398

Dalam hal ini, Anda telah membuka DBD-SQLite dipasang di file dbdimp.c tersedia, carisqlite3_prepare () fungsi, dan itu adalah yang ketiga parameter 0 -1.Akhirnya, penggunaanmake dan make installuntuk menginstal DBD :: SQLite, Anda dapat memecahkan masalah. dalam hal ini Anda akan memiliki dbdimp.c terbuka file yang tersedia di instalasi DBD-SQLite dan mencari tahu sqlite3_prepare () fungsi dan mengubah argumen ketiga dengan -1 bukan 0. Akhirnya menginstal DBD :: SQLite menggunakan membuat dan melakukan make install untuk menyelesaikan masalah.

operasi INSERT

mengikuti program Perl menunjukkan cara membuat catatan dalam tabel COMPANY dibuat di atas:

#! / Usr / bin / perl

menggunakan DBI;
menggunakan ketat;

saya $ sopir = "SQLite";
saya $ database = "test.db";
saya $ dsn = "DBI: $ sopir: dbname = $ database";
saya $ userid = "";
$ Kata sandi = "";
saya $ dbh = DBI-> terhubung ($ dsn, $ userid, $ password, {RaiseError => 1})
                      atau mati $ DBI :: errstr;
print "Database Dibuka berhasil \ n";

$ Stmt saya = qq (INSERT INTO PERUSAHAAN (ID, NAMA, UMUR, ALAMAT, GAJI)
      NILAI (1, 'Paul', 32, 'California', 20.000,00));
saya $ rv = $ dbh-> lakukan ($ stmt) atau mati $ DBI :: errstr;

$ Stmt = qq (INSERT INTO PERUSAHAAN (ID, NAMA, UMUR, ALAMAT, GAJI)
      NILAI (2, 'Allen', 25, 'Texas', 15.000,00));
$ Rv = $ dbh-> lakukan ($ stmt) atau mati $ DBI :: errstr;

$ Stmt = qq (INSERT INTO PERUSAHAAN (ID, NAMA, UMUR, ALAMAT, GAJI)
      NILAI (3, 'Teddy', 23, 'Norwegia, 20.000,00));
$ Rv = $ dbh-> lakukan ($ stmt) atau mati $ DBI :: errstr;

$ Stmt = qq (INSERT INTO PERUSAHAAN (ID, NAMA, UMUR, ALAMAT, GAJI)
      NILAI (4, 'Mark', 25, 'Rich-Mond', 65.000,00););
$ Rv = $ dbh-> lakukan ($ stmt) atau mati $ DBI :: errstr;

print "Rekaman berhasil dibuat \ n";
$ Dbh-> disconnect ();

Program di atas dijalankan, maka akan dibuat dalam tabel COMPANY untuk catatan yang diberikan, dan menampilkan dua baris berikut:

database yang dibuka berhasil
Catatan berhasil dibuat

operasi SELECT

mengikuti program Perl menunjukkan bagaimana untuk mendapatkan dari meja PERUSAHAAN buat sebelumnya dan menampilkan catatan:

#! / Usr / bin / perl

menggunakan DBI;
menggunakan ketat;

saya $ sopir = "SQLite";
saya $ database = "test.db";
saya $ dsn = "DBI: $ sopir: dbname = $ database";
saya $ userid = "";
$ Kata sandi = "";
saya $ dbh = DBI-> terhubung ($ dsn, $ userid, $ password, {RaiseError => 1})
                      atau mati $ DBI :: errstr;
print "Database Dibuka berhasil \ n";

saya $ stmt = qq (SELECT id, nama, alamat, gaji dari PERUSAHAAN;);
saya $ STH = $ dbh-> mempersiapkan ($ stmt);
saya $ rv = $ sth-> mengeksekusi () atau mati $ DBI :: errstr;
if ($ rv <0) {
   print $ DBI :: errstr;
}
sementara (saya @row = $ sth-> fetchrow_array ()) {
      print "ID =" $ row [0] "\ n" ..;
      . Print "NAME =" $ row [1] "\ n" .;
      . Print "ALAMAT =" $ row [2] "\ n" .;
      . Print "GAJI =" $ row [3] "\ n \ n" .;
}
print "Operasi dilakukan dengan sukses \ n";
$ Dbh-> disconnect ();

Ketika program di atas dijalankan, maka akan menghasilkan hasil sebagai berikut:

database yang dibuka berhasil
ID = 1
NAME = Paul
ALAMAT = California
GAJI = 20000

ID = 2
NAME = Allen
ALAMAT = Texas
GAJI = 15000

ID = 3
NAME = Teddy
ALAMAT = Norwegia
GAJI = 20000

ID = 4
NAME = Mark
ALAMAT = Rich-Mond
GAJI = 65000

Operasi berhasil dilakukan

operasi UPDATE

Berikut kode Perl menunjukkan bagaimana menggunakan pernyataan UPDATE untuk memperbarui catatan apapun, kemudian mendapatkan dari meja PERUSAHAAN dan menampilkan catatan diperbarui:

#! / Usr / bin / perl

menggunakan DBI;
menggunakan ketat;

saya $ sopir = "SQLite";
saya $ database = "test.db";
saya $ dsn = "DBI: $ sopir: dbname = $ database";
saya $ userid = "";
$ Kata sandi = "";
saya $ dbh = DBI-> terhubung ($ dsn, $ userid, $ password, {RaiseError => 1})
                      atau mati $ DBI :: errstr;
print "Database Dibuka berhasil \ n";

saya $ stmt = qq (UPDATE PERUSAHAAN mengatur GAJI = 25.000,00 mana ID = 1;);
saya $ rv = $ dbh-> lakukan ($ stmt) atau mati $ DBI :: errstr;
if ($ rv <0) {
   print $ DBI :: errstr;
} Lain {
   print "Jumlah baris diperbarui: $ rv n \";
}
$ Stmt = qq (SELECT id, nama, alamat, gaji dari PERUSAHAAN;);
saya $ STH = $ dbh-> mempersiapkan ($ stmt);
$ Rv = $ sth-> mengeksekusi () atau mati $ DBI :: errstr;
if ($ rv <0) {
   print $ DBI :: errstr;
}
sementara (saya @row = $ sth-> fetchrow_array ()) {
      print "ID =" $ row [0] "\ n" ..;
      . Print "NAME =" $ row [1] "\ n" .;
      . Print "ALAMAT =" $ row [2] "\ n" .;
      . Print "GAJI =" $ row [3] "\ n \ n" .;
}
print "Operasi dilakukan dengan sukses \ n";
$ Dbh-> disconnect ();

Ketika program di atas dijalankan, maka akan menghasilkan hasil sebagai berikut:

database yang dibuka berhasil
Total jumlah baris diperbarui: 1
ID = 1
NAME = Paul
ALAMAT = California
GAJI = 25000

ID = 2
NAME = Allen
ALAMAT = Texas
GAJI = 15000

ID = 3
NAME = Teddy
ALAMAT = Norwegia
GAJI = 20000

ID = 4
NAME = Mark
ALAMAT = Rich-Mond
GAJI = 65000

Operasi berhasil dilakukan

operasi DELETE

Berikut kode Perl menunjukkan bagaimana menggunakan pernyataan DELETE menghapus catatan apapun, dan kemudian diambil dari tabel PERUSAHAAN dan menampilkan rekaman yang tersisa:

#! / Usr / bin / perl

menggunakan DBI;
menggunakan ketat;

saya $ sopir = "SQLite";
saya $ database = "test.db";
saya $ dsn = "DBI: $ sopir: dbname = $ database";
saya $ userid = "";
$ Kata sandi = "";
saya $ dbh = DBI-> terhubung ($ dsn, $ userid, $ password, {RaiseError => 1})
                      atau mati $ DBI :: errstr;
print "Database Dibuka berhasil \ n";

saya $ stmt = qq (DELETE dari PERUSAHAAN mana ID = 2;);
saya $ rv = $ dbh-> lakukan ($ stmt) atau mati $ DBI :: errstr;
if ($ rv <0) {
   print $ DBI :: errstr;
} Lain {
   print "Jumlah baris dihapus: $ rv n \";
}
$ Stmt = qq (SELECT id, nama, alamat, gaji dari PERUSAHAAN;);
saya $ STH = $ dbh-> mempersiapkan ($ stmt);
$ Rv = $ sth-> mengeksekusi () atau mati $ DBI :: errstr;
if ($ rv <0) {
   print $ DBI :: errstr;
}
sementara (saya @row = $ sth-> fetchrow_array ()) {
      print "ID =" $ row [0] "\ n" ..;
      . Print "NAME =" $ row [1] "\ n" .;
      . Print "ALAMAT =" $ row [2] "\ n" .;
      . Print "GAJI =" $ row [3] "\ n \ n" .;
}
print "Operasi dilakukan dengan sukses \ n";
$ Dbh-> disconnect ();

Ketika program di atas dijalankan, maka akan menghasilkan hasil sebagai berikut:

database yang dibuka berhasil
Total jumlah baris dihapus: 1
ID = 1
NAME = Paul
ALAMAT = California
GAJI = 25000

ID = 3
NAME = Teddy
ALAMAT = Norwegia
GAJI = 20000

ID = 4
NAME = Mark
ALAMAT = Rich-Mond
GAJI = 65000

Operasi berhasil dilakukan