データを更新する
次に既存のデータを更新する方法について説明します。
まずは、データセットからデータの変更対象となるレコードを取得します。レコードの取得はデータテーブルが持つSelectメソッドを使用します。
Selectメソッドの引数には、データ取得条件を指定します。たとえば、EMPNOが1234のレコードを取得するには
$dtRows = $dtSet.Tables[0].Select("EMPNO='1234'")
のようにします(図3)。

図3 条件によるレコードの選択
条件によっては、データは複数件返されることがあるため、代入先の変数は配列となります。
変更対象のレコードを取得したら、実際にデータの変更を行います。
変数は配列オブジェクトになっているため、変更対象のレコードは要素番号を指定する必要があります。最初のレコードを変更対象とする場合には、要素番号は0となります。
リスト8は、取得した1件目のレコードのJOBとMGRを変更します。
$dtRows[0]["JOB"] = "ANALYST"; $dtRows[0]["MGR"] = "7566";
取得したデータの変更を行うと、データセットのテーブルにも反映されます(図4)。
このデータセットをデータベースに反映させるには、データを追加するときと同様にデータアダプタのUpdateメソッドを実行します。
[void]$oraDa.Update($dtSet)

図4 変更したデータはデータセットに反映される
データを削除する
最後に既存のデータを削除する方法について説明します。
データを削除するには、データを更新するときと同様に、データテーブルが持つSelectメソッドで対象のレコードを取得します。たとえば、EMPNO が "1234" を削除対象とする場合は
$dtRows = $dtSet.Tables[0].Select("EMPNO='1234'")
とします。
取得したレコードデータは配列オブジェクトになっているため、foreachを使用して1件ずつ削除を行います(リスト11)。
foreach ( $dtRow in $dtRows )
{
$dtRow.Delete()
}
最後に Updateメソッドを実行し、データセットに反映した結果を、データベースへ反映させます。
まとめ
今回はOracleデータベースへのデータの追加、変更、削除について説明しました。
Oracleを対象にしてデータベースの操作方法を説明しましたが、SQL ServerやMySQLなども同様の手順で操作することができます。ぜひ、普段操作しているデータベースでも、同様に試して頂ければ幸いです。
