Latest web development tutorials

SQLite - Perl

instalar

SQLite3 puede utilizar la integración del módulo Perl DBI de Perl. módulo DBI de Perl es un lenguaje de programación Perl módulo de acceso a la base de datos. Se define un conjunto de métodos, variables y reglas proporcionan una interfaz de base de datos estándar.

A continuación se muestran los pasos para instalar el módulo DBI en 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
$ Hacer
$ Make install

Si necesita instalar el driver SQLite DBI puede luego ser instalado siguiendo estos pasos:

$ 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
$ Hacer
$ Make install

API de interfaz de DBI

Los siguientes son importante programa de DBI para satisfacer sus necesidades utilizando la base de datos SQLite en los programas de Perl. Si necesita más detalles, consulte la documentación oficial de 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() 打开的数据库连接。

Conectarse a la base de datos

El siguiente código de Perl muestra cómo conectarse a una base de datos existente. Si no existe la base de datos, se crea, y finalmente devuelve un objeto de base de datos.

#! / Usr / bin / perl

use DBI;
use strict;

mi controlador $ = "SQLite"; 
mi base de datos $ = "test.db";
mi $ DSN = "DBI: $ conductor: dbname = $ base de datos";
mi ID de usuario $ = "";
mi $ password = "";
mi $ dap = DBI-> connect (DSN $, $ id de usuario, contraseña $, {RaiseError => 1}) 
                      o morir $ DBI :: cadena_err;

print "base de datos abierta con éxito \ n";

Ahora, vamos a ejecutar el programa anterior, crear nuestrotest.db base de datos en el directorio actual.Puede cambiar la ruta, según sea necesario. Guarde el código anterior para sqlite.pl archivo y pulse muestra se realiza de la siguiente manera. Si la base de datos se ha creado correctamente, se mostrará el mensaje que se muestra a continuación:

$ Chmod + x sqlite.pl
$ ./sqlite.pl
base de datos abierta con éxito

Crear una tabla

El siguiente fragmento de código Perl se utiliza para crear una tabla en la base de datos creada anteriormente:

#! / Usr / bin / perl

use DBI;
use strict;

mi controlador $ = "SQLite";
mi base de datos $ = "test.db";
mi $ DSN = "DBI: $ conductor: dbname = $ base de datos";
mi ID de usuario $ = "";
mi $ password = "";
mi $ dap = DBI-> connect (DSN $, $ id de usuario, contraseña $, {RaiseError => 1})
                      o morir $ DBI :: cadena_err;
print "base de datos abierta con éxito \ n";

mi $ stmt = qq (CREAR EMPRESA TABLA
      (ID INT PRIMARY KEY NOT NULL,
       NOMBRE DE TEXTO NO NULO,
       EDAD INT NOT NULL,
       CHAR DIRECCIÓN (50),
       VERDADERO SALARIO););
mi rv = $ $ dbh-> do ($ stmt);
if ($ rv <0) {
   print $ DBI :: cadena_err;
} Else {
   print "Tabla creada con éxito \ n";
}
$ Dbh-> desconexión ();

Cuando el procedimiento anterior, se crea la tabla EMPRESA entest.db y muestra el mensaje que se muestra a continuación:

la base de datos abierto con éxito
Tabla creado con éxito

NOTA: Si se produce el siguiente error en cualquier operación: en caso de que vea error en cualquiera de la operación:

DBD :: SQLite :: st no pudo ejecutar: no es un error (21) en la línea 398 dbdimp.c

En este caso, se haya abierto el instalado en el archivo dbdimp.c disponibles DBD-SQLite, encontrar la funciónsqlite3_prepare (), y es la tercera el parámetro 0 en -1.Por último, el uso de lamarca y elmake install para instalar DBD :: SQLite, se puede resolver el problema. en este caso, tendrá que dbdimp.c abierto los archivos disponibles en la instalación de DBD-SQLite y averiguar sqlite3_prepare () y cambiar su tercer argumento a -1 en lugar de 0. Finalmente instalar DBD :: SQLite usando realizar y qué hacer para resolver instalar el problema.

operación INSERT

El siguiente programa Perl se muestra cómo crear registros de la tabla empresa creada anteriormente:

#! / Usr / bin / perl

use DBI;
use strict;

mi controlador $ = "SQLite";
mi base de datos $ = "test.db";
mi $ DSN = "DBI: $ conductor: dbname = $ base de datos";
mi ID de usuario $ = "";
mi $ password = "";
mi $ dap = DBI-> connect (DSN $, $ id de usuario, contraseña $, {RaiseError => 1})
                      o morir $ DBI :: cadena_err;
print "base de datos abierta con éxito \ n";

mi $ stmt = qq (INSERT INTO EMPRESA (ID, NOMBRE, edad, dirección, SALARIO)
      VALUES (1, 'Paul', 32, 'California', 20000.00));
mi rv = $ $ dbh-> do ($ stmt) o morir $ DBI :: cadena_err;

$ Stmt = qq (INSERT INTO EMPRESA (ID, NOMBRE, edad, dirección, SALARIO)
      VALUES (2, 'Allen', 25 ', Texas, 15000.00));
Rv = $ $ dbh-> do ($ stmt) o morir $ DBI :: cadena_err;

$ Stmt = qq (INSERT INTO EMPRESA (ID, NOMBRE, edad, dirección, SALARIO)
      VALUES (3, 'Teddy', 23, «Noruega», 20000.00));
Rv = $ $ dbh-> do ($ stmt) o morir $ DBI :: cadena_err;

$ Stmt = qq (INSERT INTO EMPRESA (ID, NOMBRE, edad, dirección, SALARIO)
      VALUES (4, 'Marcos', 25 ', Rich-Mond', 65000.00););
Rv = $ $ dbh-> do ($ stmt) o morir $ DBI :: cadena_err;

print "Los registros creados con éxito \ n";
$ Dbh-> desconexión ();

El programa anterior se ejecuta, se crea en la tabla de la compañía para un registro dado, y muestra las dos líneas siguientes:

la base de datos abierto con éxito
Registros creado con éxito

operaciones SELECT

El siguiente programa de Perl muestra cómo llegar desde la mesa EMPRESA creado anteriormente y muestra el registro:

#! / Usr / bin / perl

use DBI;
use strict;

mi controlador $ = "SQLite";
mi base de datos $ = "test.db";
mi $ DSN = "DBI: $ conductor: dbname = $ base de datos";
mi ID de usuario $ = "";
mi $ password = "";
mi $ dap = DBI-> connect (DSN $, $ id de usuario, contraseña $, {RaiseError => 1})
                      o morir $ DBI :: cadena_err;
print "base de datos abierta con éxito \ n";

mi $ stmt = qq (SELECT ID, nombre, dirección, salario de la compañía;);
mi $ sth = $ dbh-> prepare ($ stmt);
mi rv = $ $ sth-> execute () or die $ DBI :: cadena_err;
if ($ rv <0) {
   print $ DBI :: cadena_err;
}
mientras que (mi @row = $ sth-> fetchrow_array ()) {
      print "ID =" $ fila [0] "\ n" ..;
      . Imprimir "name =" $ fila [1] "\ n" .;
      . Imprimir "DIRECCIÓN =" $ fila [2] "\ n" .;
      . Imprimir "SALARIO =" $ fila [3] "\ n \ n" .;
}
Operación «hecho con éxito \ n";
$ Dbh-> desconexión ();

Cuando se ejecuta el programa anterior, producirá los siguientes resultados:

la base de datos abierto con éxito
ID = 1
NAME = Paul
DIRECCIÓN = California
SALARIO = 20000

ID = 2
NAME = Allen
DIRECCIÓN = Tejas
SALARIO = 15000

ID = 3
NAME = peluche
DIRECCIÓN = Noruega
SALARIO = 20000

ID = 4
NAME = Marcos
DIRECCIÓN = Rich-Mond
SALARIO = 65000

Operación hacer con éxito

operación UPDATE

El siguiente código de Perl se muestra cómo usar la instrucción UPDATE para actualizar los registros, a continuación, obtener de la tabla EMPRESA y mostrar el registro actualizado:

#! / Usr / bin / perl

use DBI;
use strict;

mi controlador $ = "SQLite";
mi base de datos $ = "test.db";
mi $ DSN = "DBI: $ conductor: dbname = $ base de datos";
mi ID de usuario $ = "";
mi $ password = "";
mi $ dap = DBI-> connect (DSN $, $ id de usuario, contraseña $, {RaiseError => 1})
                      o morir $ DBI :: cadena_err;
print "base de datos abierta con éxito \ n";

mi $ stmt = qq (EMPRESA actualización del conjunto SALARIO = 25000.00 donde ID = 1;);
mi rv = $ $ dbh-> do ($ stmt) o morir $ DBI :: cadena_err;
if ($ rv <0) {
   print $ DBI :: cadena_err;
} Else {
   print "Número total de registros actualizados: $ n rv \";
}
$ Stmt = qq (SELECT id, nombre, dirección, salario de la compañía;);
mi $ sth = $ dbh-> prepare ($ stmt);
Rv = $ $ sth-> execute () or die $ DBI :: cadena_err;
if ($ rv <0) {
   print $ DBI :: cadena_err;
}
mientras que (mi @row = $ sth-> fetchrow_array ()) {
      print "ID =" $ fila [0] "\ n" ..;
      . Imprimir "name =" $ fila [1] "\ n" .;
      . Imprimir "DIRECCIÓN =" $ fila [2] "\ n" .;
      . Imprimir "SALARIO =" $ fila [3] "\ n \ n" .;
}
Operación «hecho con éxito \ n";
$ Dbh-> desconexión ();

Cuando se ejecuta el programa anterior, producirá los siguientes resultados:

la base de datos abierto con éxito
Número total de registros actualizados: 1
ID = 1
NAME = Paul
DIRECCIÓN = California
SALARIO = 25000

ID = 2
NAME = Allen
DIRECCIÓN = Tejas
SALARIO = 15000

ID = 3
NAME = peluche
DIRECCIÓN = Noruega
SALARIO = 20000

ID = 4
NAME = Marcos
DIRECCIÓN = Rich-Mond
SALARIO = 65000

Operación hacer con éxito

operación DELETE

El siguiente código de Perl se muestra cómo utilizar la instrucción DELETE borra cualquier registro, y luego toma de la tabla EMPRESA y muestra la grabación restante:

#! / Usr / bin / perl

use DBI;
use strict;

mi controlador $ = "SQLite";
mi base de datos $ = "test.db";
mi $ DSN = "DBI: $ conductor: dbname = $ base de datos";
mi ID de usuario $ = "";
mi $ password = "";
mi $ dap = DBI-> connect (DSN $, $ id de usuario, contraseña $, {RaiseError => 1})
                      o morir $ DBI :: cadena_err;
print "base de datos abierta con éxito \ n";

mi $ stmt = qq (BORRAR de la compañía donde ID = 2;);
mi rv = $ $ dbh-> do ($ stmt) o morir $ DBI :: cadena_err;
if ($ rv <0) {
   print $ DBI :: cadena_err;
} Else {
   print "Número total de registros borrados: $ n rv \";
}
$ Stmt = qq (SELECT id, nombre, dirección, salario de la compañía;);
mi $ sth = $ dbh-> prepare ($ stmt);
Rv = $ $ sth-> execute () or die $ DBI :: cadena_err;
if ($ rv <0) {
   print $ DBI :: cadena_err;
}
mientras que (mi @row = $ sth-> fetchrow_array ()) {
      print "ID =" $ fila [0] "\ n" ..;
      . Imprimir "name =" $ fila [1] "\ n" .;
      . Imprimir "DIRECCIÓN =" $ fila [2] "\ n" .;
      . Imprimir "SALARIO =" $ fila [3] "\ n \ n" .;
}
Operación «hecho con éxito \ n";
$ Dbh-> desconexión ();

Cuando se ejecuta el programa anterior, producirá los siguientes resultados:

la base de datos abierto con éxito
Número total de registros borrados: 1
ID = 1
NAME = Paul
DIRECCIÓN = California
SALARIO = 25000

ID = 3
NAME = peluche
DIRECCIÓN = Noruega
SALARIO = 20000

ID = 4
NAME = Marcos
DIRECCIÓN = Rich-Mond
SALARIO = 65000

Operación hacer con éxito