PowerShellでのSQLServerのDB操作方法【SELECT,INSERT,UPDATE,DELETEクエリ実行】

こんにちは。
けいぞうです。

今回は「PowerShellでSQLServerのDB操作をする方法」の【クエリ実行編】の記事です。

→SQL学習の入門・初心者にオススメの書籍3選

SELECT文の実行方法

まずはSELECT文を実行する際のサンプルスクリプトになります。

# 接続文字列の作成
$ConnectionString = New-Object -TypeName System.Data.SqlClient.SqlConnectionStringBuilder
$ConnectionString['Data Source'] = "【インスタンス名】"
$ConnectionString['Initial Catalog'] = "【データベース名】"
$ConnectionString['Integrated Security'] = "TRUE"

# SELECT文の作成
$SQLQuery = "SELECT * FROM [dbo].[【テーブル名】]"

# 結果格納用のDataTableを作成
$resultsDataTable = New-Object System.Data.DataTable

# SQLConnectionとSQLCommandを設定する
$SqlConnection = New-Object System.Data.SQLClient.SQLConnection($ConnectionString)
$SqlCommand = New-Object System.Data.SQLClient.SQLCommand($SQLQuery, $SqlConnection)

# データベース接続
$SqlConnection.Open()

# ExecuteReaderを実行してDataTableにデータを格納
$resultsDataTable.Load($SqlCommand.ExecuteReader())

# データベース接続解除
$SqlConnection.Close()

# 画面表示
$resultsDataTable

1~5行目は接続情報の作成部分になります。

5行目のIntegrated Securityとは、Windows統合認証のことです。今端末にログインしているユーザーでDBにアクセスするということですね。

このWindows統合認証を使う場合は、この値をTRUEに設定します。


8行名は普通のSQLクエリ、11行目は結果格納用のDataTableの用意です。


14行目はSqlConnectionオブジェクトの作成です。このオブジェクトは、データベースへ接続したり、接続を解除したりするために使います。

15行目は、SqlCommandオブジェクトの作成です。このオブジェクトは、実行するコマンドのオブジェクトです。8行目で作成したクエリをこのオブジェクトに渡してあげて、実行用のオブジェクトが作られます。


18行目が接続開始、24行目が接続解除です。

21行目でクエリの実施と、DataTableへの格納を行っています。

DataTableへコマンド実行結果を渡すには、Load関数を使います。

Load関数には、SqlCommandのExecuteReader()の実行結果を渡します。

INSERT文の実行方法

INSERT文を実行する際のサンプルスクリプトは以下になります。

# 接続文字列の作成
$ConnectionString = New-Object -TypeName System.Data.SqlClient.SqlConnectionStringBuilder
$ConnectionString['Data Source'] = "【インスタンス名】"
$ConnectionString['Initial Catalog'] = "【データベース名】"
$ConnectionString['Integrated Security'] = "TRUE"

# INSERT文の作成
$SQLQuery = "INSERT INTO [dbo].[Curry_Menu] VALUES(N'エビカツカレー',N'タルタルソース',N'300',N'3')"

# SQLConnectionとSQLCommandを設定する
$SqlConnection = New-Object System.Data.SQLClient.SQLConnection($ConnectionString)
$SqlCommand = New-Object System.Data.SQLClient.SQLCommand($SQLQuery, $SqlConnection)

# データベース接続
$SqlConnection.Open()

# INSERT文の実行
$SqlCommand.ExecuteNonQuery()

# データベース接続解除
$SqlConnection.Close()

SELECT文と異なる箇所は1か所のみです。

21行目の実行時の関数が異なり、INSERT文実行時は

ExecuteNonQuery()を使用します。

このメソッドの戻り値はINSERTした行数になります。

UPDATE文の実行方法

UPDATE文を実行する際のサンプルスクリプトは以下になります。

# 接続文字列の作成
$ConnectionString = New-Object -TypeName System.Data.SqlClient.SqlConnectionStringBuilder
$ConnectionString['Data Source'] = "【インスタンス名】"
$ConnectionString['Initial Catalog'] = "【データベース名】"
$ConnectionString['Integrated Security'] = "TRUE"

# UPDATE文の作成
$SQLQuery = "UPDATE [dbo].[Curry_Menu] SET Hotness = N'99' WHERE Name = N'ハンバーグカレー'"

# SQLConnectionとSQLCommandを設定する
$SqlConnection = New-Object System.Data.SQLClient.SQLConnection($ConnectionString)
$SqlCommand = New-Object System.Data.SQLClient.SQLCommand($SQLQuery, $SqlConnection)

# データベース接続
$SqlConnection.Open()

# UPDATE文の実行
$SqlCommand.ExecuteNonQuery()

# データベース接続解除
$SqlConnection.Close()

こちらもINSERT文と同様で

ExecuteNonQuery()でクエリを実行します。

戻り値はUPDATEした件数になります。

DELETE文の実行方法

DELETE文を実行する際のサンプルスクリプトは以下になります。

# 接続文字列の作成
$ConnectionString = New-Object -TypeName System.Data.SqlClient.SqlConnectionStringBuilder
$ConnectionString['Data Source'] = "【インスタンス名】"
$ConnectionString['Initial Catalog'] = "【データベース名】"
$ConnectionString['Integrated Security'] = "TRUE"

# DELETE文の作成
$SQLQuery = "DELETE FROM [dbo].[Curry_Menu] WHERE Name = N'エビカツカレー'"

# SQLConnectionとSQLCommandを設定する
$SqlConnection = New-Object System.Data.SQLClient.SQLConnection($ConnectionString)
$SqlCommand = New-Object System.Data.SQLClient.SQLCommand($SQLQuery, $SqlConnection)

# データベース接続
$SqlConnection.Open()

# UPDATE文の実行
$SqlCommand.ExecuteNonQuery()

# データベース接続解除
$SqlConnection.Close()

こちらもINSERT文およびUPDATE文と同様に

ExecuteNonQuery()でクエリを実行します。

戻り値はDELETEした件数になります。

まとめ

SELECT文の実行は、結果格納用のDataTableを用意して

そのDataTableのLoad関数に、コマンドの実行結果を渡します。

コマンドの実行は「ExecuteReader()」を使用します。

また、INSERT文、UPDATE文、DELETE文の実行

ExecuteNonQuery()を使用します。

この戻り値は、それぞれ「INSERTした件数」「UPDATEした件数」「DELETEした件数」となります。

→SQL学習の入門・初心者にオススメの書籍3選