English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Perl no SQLite

Instalação

SQLite3 Pode usar o módulo DBI do Perl para integrar com o Perl. O módulo DBI do Perl é um módulo de acesso ao banco de dados do linguagem de programação Perl. Ele define um conjunto de métodos, variáveis e regras que fornecem uma interface padrão para o banco de dados.

A seguir, mostramos no Linux/Passos simples para instalar o módulo DBI em máquinas 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 precisar instalar o driver SQLite para DBI, siga os seguintes passos para instalação:

$ 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

API do DBI

Aqui estão os importantes programas DBI, que podem atender às suas necessidades de banco de dados SQLite no Perl. Se precisar de mais detalhes, consulte o documento oficial Perl DBI.

Número de seqüênciaAPI & Descrição
1DBI->connect($data_source, "", "", %attr)

Estabelece uma conexão ou sessão com o $data_source solicitado. Se a conexão for bem-sucedida, retorna um objeto de tratamento de banco de dados.

A forma de dados de origem é como mostrado abaixo:DBI:SQLite:dbname='test.db'. Dentro disso, o nome do driver SQLite é SQLite, e o nome do arquivo do banco de dados SQLite é test.db. Se o nome do arquivo filename Atribuído a ':memory:'então ele criará um banco de dados em RAM, que só será válido durante o tempo de validade da sessão.

Se o nome do arquivo filename for o nome real do arquivo de dispositivo, ele tentará abrir o arquivo de banco de dados usando esse valor de parâmetro. Se o arquivo com esse nome não existir, será criado um novo arquivo de banco de dados com esse nome.

Você pode manter os segundos e terceiros parâmetros em branco, e o último parâmetro é usado para passar várias propriedades, consulte a explicação do exemplo abaixo.

2$dbh->do($sql)

Esta rotina prepara e executa uma sentença SQL simples. Retorna o número de linhas afetadas, retornando undef em caso de erro. O valor de retorno -1 Significa que o número de linhas é desconhecido, não aplicável ou inacessível. Aqui, $dbh é gerado pelo DBI->connect() retorna o objeto de tratamento.

3$dbh->prepare($sql)

Esta rotina prepara uma sentença para execução subsequente no motor de banco de dados e retorna um objeto de tratamento de sentença.

4$sth->execute()

Esta rotina executa qualquer tratamento necessário para qualquer sentença pré-preparada. Se ocorrer um erro, retorna undef. Se executar com sucesso, retorna true, independentemente do número de linhas afetadas. Aqui, $sth é gerado por $dbh->prepare($sql) retorna o objeto de tratamento da sentença.

5$sth->fetchrow_array()

Esta rotina obtém a próxima linha de dados e retorna uma lista com os valores dos campos. Dentro dessa lista, os campos nulos serão retornados como valores undef.

6$DBI::err

Isso é equivalente a $h->err. Dentro disso, $h é qualquer tipo de tratamento, como $dbh, $sth ou $drh. Este programa retorna o código de erro do motor de banco de dados da última chamada do método do driver.

7$DBI::errstr

Isso é equivalente a $h->errstr. Dentro disso, $h é qualquer tipo de tratamento, como $dbh, $sth ou $drh. Este programa retorna a mensagem de erro do motor de banco de dados da última chamada do método DBI.

8$dbh->disconnect()

Este procedimento fecha a chamada DBI antes de ser chamado->connect() conexão de banco de dados aberta.

Conectar ao banco de dados

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

#!/usr/bin/perl
use DBI;
use strict;
my $driver   = "SQLite"; 
my $database = "test.db";
my $dsn = "DBI:$driver:dbname=$database";
my $userid = "";
my $password = "";
my $dbh = DBI->connect($dsn, $userid, $password, { RaiseError => 1 }) 
                      or die $DBI::errstr;
print "Banco de dados aberto com sucesso\n";

Agora, vamos executar o programa acima para criar nosso banco de dados no diretório atual test.dbPode alterar o caminho conforme necessário. Salve o código acima no arquivo sqlite.pl e execute conforme indicado. Se o banco de dados for criado com sucesso, será exibida a mensagem a seguir:

$ chmod +x sqlite.pl
$ ./sqlite.pl
Banco de dados aberto com sucesso

Criar tabela

O código Perl a seguir 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:$driver:dbname=$database";
my $userid = "";
my $password = "";
my $dbh = DBI->connect($dsn, $userid, $password, { RaiseError => 1 })
                      or die $DBI::errstr;
print "Banco de dados aberto com sucesso\n";
my $stmt = qq(CREATE TABLE COMPANY
      (ID INT PRIMARY KEY NOT NULL,
       NAME TEXT NOT NULL,
       AGE INT NOT NULL,
       ADDRESS CHAR (50),
       SALARY REAL););
my $rv = $dbh->do($stmt);
if($rv < 0){
   print $DBI::errstr;
} else {
   print "Tabela criada com sucesso\n";
}
$dbh->disconnect();

Ao executar o programa acima, ele criará test.db e mostre a mensagem a seguir:

Banco de dados aberto com sucesso
Crie a tabela COMPANY dentro de

Tabela criada com sucessoAtenção:

Se você encontrar o seguinte erro em qualquer operação:21Falha ao executar st execute no DBD::SQLite: não é um erro ( 398

) na linha dbdimp.c-Neste caso, você já tem no DBD sqlite3_prepare() O arquivo dbdimp.c foi aberto durante a instalação do SQLite, encontre -1Finalmente, use a função e altere o terceiro parâmetro 0 para make e make install Instale o DBD::SQLite e o problema será resolvido. neste caso, você terá o arquivo dbdimp.c disponível no DBD-Instalação do SQLite e descoberta sqlite3_prepare() function and change its third argument to -1 instead of 0. Finally install DBD::SQLite using make and do make install to solve the problem.

INSERT operation

The following Perl program shows how to create records in the COMPANY table created above:

#!/usr/bin/perl
use DBI;
use strict;
my $driver   = "SQLite";
my $database = "test.db";
my $dsn = "DBI:$driver:dbname=$database";
my $userid = "";
my $password = "";
my $dbh = DBI->connect($dsn, $userid, $password, { RaiseError => 1 })
                      or die $DBI::errstr;
print "Banco de dados aberto com sucesso\n";
my $stmt = qq(INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY)
      VALUES (1, 'Paul', 32, 'California', 20000.00 ));
my $rv = $dbh->do($stmt) or die $DBI::errstr;
my $stmt = qq(INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY)
      VALUES (2, 'Allen', 25, 'Texas', 15000.00 ));
$rv = $dbh->do($stmt) or die $DBI::errstr;
my $stmt = qq(INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY)
      VALUES (3, 'Teddy', 23, 'Norway', 20000.00 ));
$rv = $dbh->do($stmt) or die $DBI::errstr;
my $stmt = qq(INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY)
      VALUES (4, 'Mark', 25, 'Rich-Mond ', 65000.00 ));
$rv = $dbh->do($stmt) or die $DBI::errstr;
print "Records created successfully\n";
$dbh->disconnect();

When the above program is executed, it will create the given record in the COMPANY table and display the following two lines:

Banco de dados aberto com sucesso
Records created successfully

SELECT operation

The following Perl program shows how to retrieve and display records from the COMPANY table created earlier:

#!/usr/bin/perl
use DBI;
use strict;
my $driver   = "SQLite";
my $database = "test.db";
my $dsn = "DBI:$driver:dbname=$database";
my $userid = "";
my $password = "";
my $dbh = DBI->connect($dsn, $userid, $password, { RaiseError => 1 })
                      or die $DBI::errstr;
print "Banco de dados aberto com sucesso\n";
my $stmt = qq(SELECT id, name, address, salary  from COMPANY;);
my $sth = $dbh->prepare( $stmt );
my $rv = $sth->execute() or die $DBI::errstr;
if($rv < 0){
   print $DBI::errstr;
}
while(my @row = $sth->fetchrow_array()) {
      print "ID = ". $row[0] . "\n";
      print "NOME = ". $row[1] ."\n";
      print "ENDEREÇO = ". $row[2] ."\n";
      print "SALÁRIO = ". $row[3] ."\n\n";
}
print "Operação concluída com sucesso\n";
$dbh->disconnect();

Ao executar o programa acima, ele produz os seguintes resultados:

Banco de dados aberto com sucesso
ID = 1
NAME = Paul
ADDRESS = California
SALARY =  20000
ID = 2
NAME = Allen
ADDRESS = Texas
SALARY =  15000
ID = 3
NAME = Teddy
ADDRESS = Norway
SALARY =  20000
ID = 4
NAME = Mark
ADDRESS = Rich-Mond
SALARY =  65000
Operação concluída com sucesso

UPDATE operation

The following Perl code shows how to use the UPDATE statement to update any record and then retrieve and display the updated record from the COMPANY table:

#!/usr/bin/perl
use DBI;
use strict;
my $driver   = "SQLite";
my $database = "test.db";
my $dsn = "DBI:$driver:dbname=$database";
my $userid = "";
my $password = "";
my $dbh = DBI->connect($dsn, $userid, $password, { RaiseError => 1 })
                      or die $DBI::errstr;
print "Banco de dados aberto com sucesso\n";
my $stmt = qq(UPDATE COMPANY set SALARY = 25000.00 where ID=1;);
my $rv = $dbh->do($stmt) or die $DBI::errstr;
if( $rv < 0 ){
   print $DBI::errstr;
}else{
   print "Total number of rows updated : $rv\n";
}
$stmt = qq(SELECT id, name, address, salary  from COMPANY;);
my $sth = $dbh->prepare( $stmt );
$rv = $sth->execute() or die $DBI::errstr;
if($rv < 0){
   print $DBI::errstr;
}
while(my @row = $sth->fetchrow_array()) {
      print "ID = ". $row[0] . "\n";
      print "NOME = ". $row[1] ."\n";
      print "ENDEREÇO = ". $row[2] ."\n";
      print "SALÁRIO = ". $row[3] ."\n\n";
}
print "Operação concluída com sucesso\n";
$dbh->disconnect();

Ao executar o programa acima, ele produz os seguintes resultados:

Banco de dados aberto com sucesso
Total number of rows updated : 1
ID = 1
NAME = Paul
ADDRESS = California
SALARY =  25000
ID = 2
NAME = Allen
ADDRESS = Texas
SALARY =  15000
ID = 3
NAME = Teddy
ADDRESS = Norway
SALARY =  20000
ID = 4
NAME = Mark
ADDRESS = Rich-Mond
SALARY =  65000
Operação concluída com sucesso

Operação DELETE

O código Perl a seguir mostra como usar a cláusula DELETE para excluir qualquer registro e, em seguida, obter e exibir os registros restantes da tabela COMPANY:

#!/usr/bin/perl
use DBI;
use strict;
my $driver   = "SQLite";
my $database = "test.db";
my $dsn = "DBI:$driver:dbname=$database";
my $userid = "";
my $password = "";
my $dbh = DBI->connect($dsn, $userid, $password, { RaiseError => 1 })
                      or die $DBI::errstr;
print "Banco de dados aberto com sucesso\n";
my $stmt = qq(DELETE from COMPANY where ID=2;);
my $rv = $dbh->do($stmt) or die $DBI::errstr;
if( $rv < 0 ){
   print $DBI::errstr;
}else{
   print "Número total de linhas deletadas : $rv\n";
}
$stmt = qq(SELECT id, name, address, salary  from COMPANY;);
my $sth = $dbh->prepare( $stmt );
$rv = $sth->execute() or die $DBI::errstr;
if($rv < 0){
   print $DBI::errstr;
}
while(my @row = $sth->fetchrow_array()) {
      print "ID = ". $row[0] . "\n";
      print "NOME = ". $row[1] ."\n";
      print "ENDEREÇO = ". $row[2] ."\n";
      print "SALÁRIO = ". $row[3] ."\n\n";
}
print "Operação concluída com sucesso\n";
$dbh->disconnect();

Ao executar o programa acima, ele produz os seguintes resultados:

Banco de dados aberto com sucesso
Número total de linhas excluídas : 1
ID = 1
NAME = Paul
ADDRESS = California
SALARY =  25000
ID = 3
NAME = Teddy
ADDRESS = Norway
SALARY =  20000
ID = 4
NAME = Mark
ADDRESS = Rich-Mond
SALARY =  65000
Operação concluída com sucesso