English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
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
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üência | API & Descrição |
---|---|
1 | DBI->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. |
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
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.
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
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
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
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