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

SQLite Perl

インストール

SQLite3 Perl DBIモジュールを使用してPerlと統合することができます。Perl DBIモジュールは、Perlプログラミング言語のデータベースアクセスモジュールです。標準的なデータベースインターフェースを提供するメソッド、変数およびルールを定義しています。

以下はLinuxでの表示です:/UNIXマシン上にDBIモジュールをインストールする簡単な手順:

$ 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

DBIにSQLiteドライバをインストールする必要がある場合は、以下の手順に従ってインストールしてください:

$ 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

DBIインターフェースAPI

以下は重要なDBIプログラムであり、PerlプログラムでSQLiteデータベースを使用する必要がある場合にご要望に応じます。詳細について知りたい場合は、Perl DBI公式ドキュメントを参照してください。

番号API & 説明
1DBI->connect($data_source, "", "", %attr)

リクエストされた $data_source にデータベース接続またはセッションを作成します。接続が成功した場合、データベース処理オブジェクトを返します。

データソースの形式は以下の通りです:DBI:SQLite:dbname='test.db'。ここで、SQLite は SQLite ドライバの名前、test.db は SQLite データベースファイルの名前です。ファイル名 filename に設定します。 ':memory:'それがあれば、RAM 中にメモリーデータベースを作成し、セッションの有効期間中のみ持続します。

ファイル名 filename が実際のデバイスファイル名の場合、このパラメータの値を使用してデータベースファイルを開きます。この名前のファイルが存在しない場合、新しいデータベースファイルとしてこの名前が作成されます。

第2引数と第3引数を空白文字列に設定することができます。最後の引数は、さまざまな属性を渡すために使用されます。詳細は以下の例を参照してください。

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-この例程は、DBIを呼び出す前に閉じられます

>connect() でオープンされたデータベース接続。

データベースの接続

#!/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 "データベースが正常にオープンされました\n";

以下のPerlコードは、既存のデータベースに接続する方法を示しています。データベースが存在しない場合、それが作成され、最終的にデータベースオブジェクトが返されます。 上記のプログラムを実行すると、以下の場所にテーブルが作成されます現在、上記のプログラムを実行し、現在のディレクトリにデータベースを作成します

。必要に応じてパスを変更できます。上記のコードを sqlite.pl ファイルに保存し、以下のように実行します。データベースが正常に作成された場合、以下のメッセージが表示されます: +$ chmod
x sqlite.pl/$ .
sqlite.pl

データベースをオープンしました

テーブルの作成

#!/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 "データベースが正常にオープンされました\n";
以下のPerlコードセクションは、前に作成したデータベース内にテーブルを作成するために使用されます:
      my $stmt = qq(CREATE TABLE COMPANY
       (ID INT PRIMARY KEY     NOT NULL,
       NAME           TEXT    NOT NULL,
       AGE            INT     NOT NULL,5ADDRESS        CHAR(
       0),
my $rv = $dbh-SALARY         REAL););
if($rv < 0){
   print $DBI::errstr;
>do($stmt);
   } else {
}
$dbh->disconnect();

print "Table created successfully\n"; 上記のプログラムを実行すると、以下の場所にテーブルが作成されます test.db

データベースを成功してオープンしました
以下に示すように、COMPANY テーブルを「中」に作成し、以下のメッセージを表示します:

テーブルが正常に作成されました注意:

以下のエラーがどの操作でも発生した場合:オペレーション中に以下のエラーが表示された場合:21DBD::SQLite::st execute failed: not an error( 398

) dbdimp.c 行-この場合、DBD内で既に利用可能です sqlite3_prepare() SQLite インストール中に利用可能な dbdimp.c ファイルがオープンされ、以下の場所に見つけられます -1最後に、関数を使用し、その第3引数0を変更します make および make install DBD::SQLiteをインストールすると、問題が解決します。 この場合、DBD内で利用可能なdbdimp.cファイルをオープンする必要があります-SQLite インストールおよび検出 sqlite3_prepare() function and change its third argument to -1 最后使用以下命令安装 DBD::SQLite 并将其第三个参数更改为 make 并执行 make install 以解决问题。

INSERT 操作

下面的 Perl 程序显示了如何在上面创建的 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 "データベースが正常にオープンされました\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 "记录创建成功\n";
$dbh->disconnect();

上述程序执行时,它会在 COMPANY 表中创建给定记录,并会显示以下两行:

データベースを成功してオープンしました
记录创建成功

SELECT 操作

下面的 Perl 程序显示了如何从前面创建的 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 "データベースが正常にオープンされました\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 "NAME = ". $row[1] ."\n";
      print "ADDRESS = ". $row[2] ."\n";
      print "SALARY = ". $row[3] ."\n\n";
}
print "操作が正常に完了しました\n";
$dbh->disconnect();

このプログラムを実行すると、以下の結果が生成されます:

データベースを成功してオープンしました
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
操作が正常に完了しました

UPDATE 操作

下面的 Perl 代码显示了如何使用 UPDATE 语句来更新任何记录,然后从 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 "データベースが正常にオープンされました\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 "更新行总数:$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 "NAME = ". $row[1] ."\n";
      print "ADDRESS = ". $row[2] ."\n";
      print "SALARY = ". $row[3] ."\n\n";
}
print "操作が正常に完了しました\n";
$dbh->disconnect();

このプログラムを実行すると、以下の結果が生成されます:

データベースを成功してオープンしました
更新行总数: 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
操作が正常に完了しました

DELETE 操作

以下の Perl コードは、DELETE ステートメントを使用して任意のレコードを削除し、その後 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 "データベースが正常にオープンされました\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 "削除された行の総数 : $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 "NAME = ". $row[1] ."\n";
      print "ADDRESS = ". $row[2] ."\n";
      print "SALARY = ". $row[3] ."\n\n";
}
print "操作が正常に完了しました\n";
$dbh->disconnect();

このプログラムを実行すると、以下の結果が生成されます:

データベースを成功してオープンしました
削除された行の合計数 : 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
操作が正常に完了しました