SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

Windows PowerShell 活用編

Windows PowerShell 活用編(12)
Oracleデータベースの操作2

  • このエントリーをはてなブックマークに追加

 前回に引き続きPowerShellからOracleデータベースを操作する方法について説明します。今回はデータの追加・更新・削除ついてです。

  • このエントリーをはてなブックマークに追加

はじめに

 VB.NETやC#などの言語では、データベースへアクセスするための手段が標準で備わっています。Windows PowerShellでも.NET Frameworkのクラスを利用することでデータベースへアクセスすることが可能です。

 今回は、PowerShellからOracleデータベースへ接続し、データの登録、更新、削除を行う方法について説明します。

対象読者

  • Windows PowerShellの基本操作が行える方。
  • Oracleについて基本知識を有する方。
  • 簡単なSQL文が書ける方

前回のおさらい

 前回はデータセットにデータを取得しました。

 このデータセットに対して、データの追加、更新、削除を行うことが可能です。このデータセットの内容はデータアダプタを使用することで、簡単にデータベースに反映させることができます。

 データを取得するところまでは、前回と同じです。参考までにソースコードをリスト1に示します。それぞれのコードの意味については前回の記事を参照してください。

リスト1
#Assemblyのロード
[void][reflection.assembly]::LoadWithPartialName("System.Data.OracleClient")

$ConnectionString = "Data Source=MyServer;User ID=scott;Password=tiger;Integrated Security=false;"
#Assemblyのロード
[void][reflection.assembly]::LoadWithPartialName("System.Data.OracleClient")

$ConnectionString = "Data Source=icpsd01;User ID=scott;Password=tiger;Integrated Security=false;"

#接続の作成
$OraConn = New-Object System.Data.OracleClient.OracleConnection($ConnectionString)

#データセットの作成
$dtSet = New-Object System.Data.DataSet

#Select文の作成
$strSQL = "SELECT * FROM EMP"
$oraDa = New-Object System.Data.OracleClient.OracleDataAdapter($strSQL, $OraConn)

[void]$oraDa.Fill($dtSet)

OracleCommandBuilderを作成する

 これまでの説明ではデータの取得にデータアダプタを使用してきました。このデータアダプタを使用してデータの追加、更新、削除を行うには OracleCommandBuilderクラスと組み合わせて使用します。OracleCommandBuilderを使用することで、データセットの変更を反映するSQLステートメントを自動的に生成することができます。

 OracleCommandBuilderはリスト2のようにして作成します。

リスト2
#CommandBuilderの作成
$oraCB = New-Object System.Data.OracleClient.OracleCommandBuilder($OraDa)

データセットのデータを変更する 

 ここまでで、変更したデータセットのデータをデータベースへ反映させる準備が整いました。次は、実際にデータを追加、更新、削除する方法について説明します。

データの追加

 データセットのテーブルにデータを追加するには、最初にレコードデータを作成します。レコードデータの作成には、データを追加するデータテーブルのNewRowメソッドを使用します。

 NewRowメソッドは、NewRowメソッドの実行元データテーブル(図1の$dtSet.Tables[0])と同じ構成の新規レコードが作成されます(図1)。

図1 新規レコードの作成

 新規レコードを作成するにはリスト3のように記述します。

リスト3
#新規レコードの作成
$dtRow = $dtSet.Tables[0].NewRow()

 作成したレコードは 変数 $dtRow となります。

 リスト4のようにして、この$dtRowにデータをセットします。

リスト4
$dtRow["EMPNO"] = 1234;
$dtRow["ENAME"] = "HIRO";
$dtRow["JOB"] = "SALESMAN";
$dtRow["MGR"] = 7698;
$dtRow["HIREDATE"] = Get-Date -Year 2009 -Month 4 -Day 1
$dtRow["SAL"] = 2000;
$dtRow["DEPTNO"] = 30;

 $dtRowの角括弧の中にはフィールド名を2重引用符で括って指定します。

 次に、テーブルのレコード(Rows)が持つAddメソッドを実行して、作成したレコードをデータセットのテーブルに追加します(リスト5)。

リスト5
$dtSet.Tables[0].Rows.Add($dtRow)

 ここまでで、データセットへの変更が完了しました。

 最後に、変更が完了したデータセットをデータベースに反映させます。データベースに反映させるには、データアダプタのUpdateメソッドを実行します。

リスト6
[void]$oraDa.Update($dtSet)

 Updateメソッドを実行すると、データセットの内容がデータベースへ反映されます(図2)。

図2 データセットの内容をデータベースに反映

会員登録無料すると、続きをお読みいただけます

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

次のページ
まとめ

この記事は参考になりましたか?

  • このエントリーをはてなブックマークに追加
Windows PowerShell 活用編連載記事一覧

もっと読む

この記事の著者

HIRO(ヒロ)

HIRO's.NETのHIROです。とある半導体工場のSEです。VB.NET, C#, PowerShellによるプログラミングを楽しんでいます。最近はBlog でPowerShellについて書いています。2008/07/07にPowerShell from Japan!!というサイトを立ち上げまし...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/4066 2009/07/10 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング