Latest web development tutorials

SQLite - Perl

instalar

SQLite3 pode usar Perl DBI Perl integração dos módulos. módulo Perl DBI é um módulo de acesso de banco de dados Perl linguagem de programação. Ele define um conjunto de métodos, variáveis ​​e as regras de fornecer uma interface de banco de dados padrão.

Veja a seguir os passos simples para instalar o módulo DBI em máquinas 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
Faça $
$ Make install

Se você precisa instalar SQLite DBI motorista pode então ser instalado seguindo estes passos:

$ 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
Faça $
$ Make install

DBI interface API

A seguir são importantes programa DBI para atender às suas necessidades usando banco de dados SQLite em programas Perl. Se você precisar de mais detalhes, consulte a documentação oficial 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() 打开的数据库连接。

Conectar-se ao banco de dados

O código Perl a seguir mostra como se conectar a um banco de dados existente. Se o banco de dados não existir, ele é criado, e, finalmente, retorna um objeto de banco de dados.

#! / Usr / bin / perl

use DBI;
use strict;

my $ driver = "SQLite"; 
my $ database = "test.db";
my $ dsn = "DBI: $ motorista: dbname = $ base de dados";
my $ userid = "";
my $ password = "";
my $ dbh = DBI-> connect ($ dsn, $ id do usuário, $ password, {RaiseError => 1}) 
                      ou morrer $ DBI :: errstr;

print "banco de dados aberto \ êxito n";

Agora, vamos executar o programa acima, criar o nossotest.db banco de dados no diretório atual.Você pode alterar o caminho conforme necessário. Salve o código acima para sqlite.pl arquivo e pressione mostrado é realizada da seguinte forma. Se o banco de dados é criado com êxito, ele irá exibir a mensagem mostrada a seguir:

$ Chmod + x sqlite.pl
$ ./sqlite.pl
Abrir banco de dados com êxito

Criar uma tabela

O seguinte trecho de código Perl será usado para criar uma tabela no banco de dados criado anteriormente:

#! / Usr / bin / perl

use DBI;
use strict;

my $ driver = "SQLite";
my $ database = "test.db";
my $ dsn = "DBI: $ motorista: dbname = $ base de dados";
my $ userid = "";
my $ password = "";
my $ dbh = DBI-> connect ($ dsn, $ id do usuário, $ password, {RaiseError => 1})
                      ou morrer $ DBI :: errstr;
print "banco de dados aberto \ êxito n";

my $ stmt = qq (CRIAR COMPANY TABLE
      (ID INT PRIMARY KEY NOT NULL,
       TEXT NAME NOT NULL,
       AGE INT NOT NULL,
       CHAR ADDRESS (50),
       Salário real););
my $ rv = $ dbh-> fazer ($ stmt);
if ($ rv <0) {
   print $ DBI :: errstr;
} Else {
   print "Tabela criado com sucesso \ n";
}
$ Dbh-> disconnect ();

Quando o procedimento acima, ele cria a tabela COMPANY emtest.db e exibe a mensagem mostrada abaixo:

banco de dados aberto com sucesso
Tabela criada com sucesso

NOTA: Se você encontrar o seguinte erro em qualquer operação: caso você ver seguinte erro em qualquer da operação:

DBD :: SQLite :: st executar falhou: não foi um erro (21) na linha 398 dbdimp.c

Neste caso, você abriu o DBD-SQLite instalado no arquivo dbdimp.c disponíveis, encontrar a funçãosqlite3_prepare (), e é o terceiro parâmetro 0 a -1.Finalmente, o uso demake e make installpara instalar DBD :: SQLite, você pode resolver o problema. neste caso você terá dbdimp.c aberto arquivo disponível na instalação do DBD-SQLite e descobrir () função sqlite3_prepare e alterar o seu terceiro argumento para -1 em vez de 0. Finalmente instalar DBD :: SQLite usando fazer e fazem instalar para resolver o problema.

operação INSERT

O programa Perl a seguir mostra como criar registros na tabela de empresa criada acima:

#! / Usr / bin / perl

use DBI;
use strict;

my $ driver = "SQLite";
my $ database = "test.db";
my $ dsn = "DBI: $ motorista: dbname = $ base de dados";
my $ userid = "";
my $ password = "";
my $ dbh = DBI-> connect ($ dsn, $ id do usuário, $ password, {RaiseError => 1})
                      ou morrer $ DBI :: errstr;
print "banco de dados aberto \ êxito n";

my $ stmt = qq (INSERT INTO COMPANY (ID, nome, idade, endereço, SALÁRIO)
      VALUES (1, 'Paul', 32, 'California', 20000.00));
my $ rv = $ dbh-> fazer ($ stmt) or die $ DBI :: errstr;

$ Stmt = qq (INSERT INTO COMPANY (ID, nome, idade, endereço, SALÁRIO)
      VALUES (2, 'Allen', 25, 'Texas', 15000.00));
$ Rv = $ dbh-> fazer ($ stmt) or die $ DBI :: errstr;

$ Stmt = qq (INSERT INTO COMPANY (ID, nome, idade, endereço, SALÁRIO)
      VALUES (3, 'Teddy', 23, «Noruega», 20000.00));
$ Rv = $ dbh-> fazer ($ stmt) or die $ DBI :: errstr;

$ Stmt = qq (INSERT INTO COMPANY (ID, nome, idade, endereço, SALÁRIO)
      VALUES (4, 'Mark', 25, 'Rich-Mond', 65.000,00););
$ Rv = $ dbh-> fazer ($ stmt) or die $ DBI :: errstr;

print "registros criados com sucesso \ n";
$ Dbh-> disconnect ();

O programa acima é executado, ele será criado na tabela de empresa por um determinado registro e exibe as duas linhas seguintes:

banco de dados aberto com sucesso
Registros criados com êxito

operações SELECT

O programa Perl a seguir mostra como obter da tabela A empresa criou mais cedo e exibe o registro:

#! / Usr / bin / perl

use DBI;
use strict;

my $ driver = "SQLite";
my $ database = "test.db";
my $ dsn = "DBI: $ motorista: dbname = $ base de dados";
my $ userid = "";
my $ password = "";
my $ dbh = DBI-> connect ($ dsn, $ id do usuário, $ password, {RaiseError => 1})
                      ou morrer $ DBI :: errstr;
print "banco de dados aberto \ êxito n";

my $ stmt = qq (SELECT id, nome, endereço, salário da COMPANHIA;);
my $ sth = $ dbh-> prepare ($ stmt);
my $ rv = $ sth-> execute () ou morrer $ DBI :: errstr;
if ($ rv <0) {
   print $ DBI :: errstr;
}
while (meu @row = $ sth-> fetchrow_array ()) {
      print "ID =" $ row [0] "\ n" ..;
      . Imprimir "NAME =" $ row [1] "\ n" .;
      . Imprimir "ADDRESS =" $ row [2] "\ n" .;
      . Imprimir "SALÁRIO =" $ row [3] "\ n \ n" .;
}
print "Operação feito com sucesso \ n";
$ Dbh-> disconnect ();

Quando o programa acima é executado, ele irá produzir os seguintes resultados:

banco de dados aberto com sucesso
ID = 1
NAME = Paul
ADDRESS = California
SALÁRIO = 20000

ID = 2
NAME = Allen
ADDRESS = Texas
SALÁRIO = 15000

ID = 3
NAME = Teddy
ADDRESS = Noruega
SALÁRIO = 20000

ID = 4
NAME = Mark
ADDRESS = Rich-Mond
SALÁRIO = 65000

Operação realizada com sucesso

operação UPDATE

O código Perl a seguir mostra como usar a instrução UPDATE para atualizar os registros, em seguida, obter da tabela COMPANY e exibir o registro atualizado:

#! / Usr / bin / perl

use DBI;
use strict;

my $ driver = "SQLite";
my $ database = "test.db";
my $ dsn = "DBI: $ motorista: dbname = $ base de dados";
my $ userid = "";
my $ password = "";
my $ dbh = DBI-> connect ($ dsn, $ id do usuário, $ password, {RaiseError => 1})
                      ou morrer $ DBI :: errstr;
print "banco de dados aberto \ êxito n";

my $ stmt = qq (ACTUALIZAÇÃO empresa criada SALÁRIO = 25000.00 onde ID = 1;);
my $ rv = $ dbh-> fazer ($ stmt) or die $ DBI :: errstr;
if ($ rv <0) {
   print $ DBI :: errstr;
} Else {
   print "Número total de linhas actualização: $ rv n \";
}
$ Stmt = qq (SELECT id, nome, endereço, salário da COMPANHIA;);
my $ sth = $ dbh-> prepare ($ stmt);
$ Rv = $ sth-> execute () ou morrer $ DBI :: errstr;
if ($ rv <0) {
   print $ DBI :: errstr;
}
while (meu @row = $ sth-> fetchrow_array ()) {
      print "ID =" $ row [0] "\ n" ..;
      . Imprimir "NAME =" $ row [1] "\ n" .;
      . Imprimir "ADDRESS =" $ row [2] "\ n" .;
      . Imprimir "SALÁRIO =" $ row [3] "\ n \ n" .;
}
print "Operação feito com sucesso \ n";
$ Dbh-> disconnect ();

Quando o programa acima é executado, ele irá produzir os seguintes resultados:

banco de dados aberto com sucesso
número total de linhas actualização: 1
ID = 1
NAME = Paul
ADDRESS = California
SALÁRIO = 25000

ID = 2
NAME = Allen
ADDRESS = Texas
SALÁRIO = 15000

ID = 3
NAME = Teddy
ADDRESS = Noruega
SALÁRIO = 20000

ID = 4
NAME = Mark
ADDRESS = Rich-Mond
SALÁRIO = 65000

Operação realizada com sucesso

operação DELETE

O código Perl a seguir mostra como usar a instrução DELETE exclui os registros, em seguida, extraídos da tabela da COMPANHIA e exibe o restante de gravação:

#! / Usr / bin / perl

use DBI;
use strict;

my $ driver = "SQLite";
my $ database = "test.db";
my $ dsn = "DBI: $ motorista: dbname = $ base de dados";
my $ userid = "";
my $ password = "";
my $ dbh = DBI-> connect ($ dsn, $ id do usuário, $ password, {RaiseError => 1})
                      ou morrer $ DBI :: errstr;
print "banco de dados aberto \ êxito n";

my $ stmt = qq (DELETE da empresa onde ID = 2;);
my $ rv = $ dbh-> fazer ($ stmt) or die $ DBI :: errstr;
if ($ rv <0) {
   print $ DBI :: errstr;
} Else {
   print "Número total de linhas excluídas: $ rv n \";
}
$ Stmt = qq (SELECT id, nome, endereço, salário da COMPANHIA;);
my $ sth = $ dbh-> prepare ($ stmt);
$ Rv = $ sth-> execute () ou morrer $ DBI :: errstr;
if ($ rv <0) {
   print $ DBI :: errstr;
}
while (meu @row = $ sth-> fetchrow_array ()) {
      print "ID =" $ row [0] "\ n" ..;
      . Imprimir "NAME =" $ row [1] "\ n" .;
      . Imprimir "ADDRESS =" $ row [2] "\ n" .;
      . Imprimir "SALÁRIO =" $ row [3] "\ n \ n" .;
}
print "Operação feito com sucesso \ n";
$ Dbh-> disconnect ();

Quando o programa acima é executado, ele irá produzir os seguintes resultados:

banco de dados aberto com sucesso
Número total de linhas excluídas: 1
ID = 1
NAME = Paul
ADDRESS = California
SALÁRIO = 25000

ID = 3
NAME = Teddy
ADDRESS = Noruega
SALÁRIO = 20000

ID = 4
NAME = Mark
ADDRESS = Rich-Mond
SALÁRIO = 65000

Operação realizada com sucesso