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 & 描述 |
---|---|
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() 打开的数据库连接。 |
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