2008-04-02から1日間の記事一覧
$dbh->{AutoCommit} = 0; # トランザクションを有効にする。 $dbh->{RaiseError} = 1; クエリに問題がある場合は、dieを呼び出す。 eval { # ここで挿入、更新、削除、問い合わせなどを行う。 $dbh->commit(); }; if ($@) { warn "Transaction aborted: $@; …
$rows = $dbh->do("DELETE FROM Conference WHERE Language='REBOL'"); if (! defined $rows) { # 失敗したときの処理。ただし、RaiseErrorが有効になっていれば、不要である。 } else { print "Deleted $rows rows\n";
検索用のクエリを実行時に構築したい。例えば、プログラムのユーザが検索の対象とする列と許容できる値の範囲を組み合わせて指定できるようにする。 検索の条件を示す句のリストを構築し、joinによってそれらを連結してSQLのWHERE句を作成する。 if ($year_m…
類似しているが全く同じではない複数のクエリがあり、それらを効率的に実行したい。 prepareを使用して、クエリを1回だけ準備しておけば、そのクエリはexecuteを使用して、何回でも繰り返し実行することができる。 $sth = $dbh->prepare($SQL); # クエリを10…
自分のプログラムにおいて、データベースのエラーを捕捉して処理したい。 データベースに接続するときに、RaiseErrorを有効にし、データベースに対する呼び出しをevalブロックの中に書く。 $dbh = DBI->connect($DSN, $user, $password, { RaiseError => 1 }…