SQLite+Perl: データを挿入する方法

SQLitePerlで、事前に作成したテーブルにデータを挿入(追加)する方法をメモっておく。

データを挿入するテーブルは以下の通りである。

user_info(
    id integer primary key,
    name,
    email
  )

このテーブルに次の2つのデータを挿入する方法を述べる。

データ1:name=hoge, email=admin@hoge.com
データ2:name=hoge2, email=admin2@hoge.com

idは、null を指定して自動的に割り当てることとする。

サンプルコード

#!/usr/bin/perl

use DBI;

$mydb = "testdb";

$hDB = DBI->connect(
  "dbi:SQLite:dbname=$mydb","","",{PrintError=>0}
  );
if(!$hDB){
	print "$DBI::errstr \n";
	exit;
}

# (1) データ挿入のSQL文
$sql =
  "INSERT INTO user_info VALUES(
    null,
    ?,
    ?
  )";

# (2) データ挿入実行
$hst = $hDB->prepare($sql);
if($hst){
	$retval = $hst->execute("hoge","admin\@hoge.com");
	if(!$retval){
		print $hDB->errstr . "\n";
		exit;
	}
	$retval = $hst->execute("hoge2","admin2\@hoge.com");
	if(!$retval){
		print $hDB->errstr . "\n";
		exit;
	}
}
else{
	# エラー処理
	print $hDB->errstr . "\n";
	exit;
}

$hDB->disconnect;

解説

(1) データ挿入のSQL文

データ挿入には、INSERT文を使用する。"id"の部分に"null"を指定しているが、これは自動的に連番を割り当てるためである。続く、二つの値に"?"を指定しているが、実際のデータは"execute"で指定する。2つ以上のデータを連続して挿入(追加)する場合には、このようにすることで若干の高速化を図ることができる(らしい)。

(2) データ挿入実行

そしてSQLを実行する。prepare で準備を行い、execute で先ほど"?"で指定した部分に実際のデータを指定して実行する。

関連記事

トラックバック(0)

このブログ記事に対するトラックバックURL: http://itsmemo.com/mt/mt-tb.cgi/53

※スパム防止のため、管理人がトラックバック内容確認後、公開されます。

コメントする