2008-04-02から1日間の記事一覧

14.15 トランザクションを使用する

$dbh->{AutoCommit} = 0; # トランザクションを有効にする。 $dbh->{RaiseError} = 1; クエリに問題がある場合は、dieを呼び出す。 eval { # ここで挿入、更新、削除、問い合わせなどを行う。 $dbh->commit(); }; if ($@) { warn "Transaction aborted: $@; …

14.14 クエリによって返された行数を確認する

$rows = $dbh->do("DELETE FROM Conference WHERE Language='REBOL'"); if (! defined $rows) { # 失敗したときの処理。ただし、RaiseErrorが有効になっていれば、不要である。 } else { print "Deleted $rows rows\n";

14.13 プログラムによってクエリを生成する

検索用のクエリを実行時に構築したい。例えば、プログラムのユーザが検索の対象とする列と許容できる値の範囲を組み合わせて指定できるようにする。 検索の条件を示す句のリストを構築し、joinによってそれらを連結してSQLのWHERE句を作成する。 if ($year_m…

14.12 効率よくクエリを繰り返す

類似しているが全く同じではない複数のクエリがあり、それらを効率的に実行したい。 prepareを使用して、クエリを1回だけ準備しておけば、そのクエリはexecuteを使用して、何回でも繰り返し実行することができる。 $sth = $dbh->prepare($SQL); # クエリを10…

14.11 データベースのエラーを処理する

自分のプログラムにおいて、データベースのエラーを捕捉して処理したい。 データベースに接続するときに、RaiseErrorを有効にし、データベースに対する呼び出しをevalブロックの中に書く。 $dbh = DBI->connect($DSN, $user, $password, { RaiseError => 1 }…