PowerShellからADO.NETを使う

wataru-w2008-01-11



英語サイトからほぼ転記。申し訳ねぇm(__)m
解説は後で書きます。
やっていることは、ローカルのSQL Server Express Edition にADO.NETでつなげて、
DataSetに落とし込む。で、抽出されたテーブルをさらにセレクトして名前を編集。


何がすごいって、実質4行でSQL Serverにつないでデータを取ってこれるということ。
う〜んいいな。PowerShell。やっとWindowsにも使えるシェルが出来たかって感じですね。

(パイプ)でつなぐだけでデータを引き渡せるのもいいですね。


$query = "SELECT * FROM [Users]"
$connString = "server=MyPC\SQLEXPRESS;integrated security=True;database=MyDBName"
$dataset = new-object "System.Data.DataSet" "MyDataSet"
$da = new-object "System.Data.SqlClient.SqlDataAdapter" ($query, $connString)
$da.Fill($dataset)
$User = $dataset.Tables[0]
$User | ?{$_.UserId -eq "MyID"} | %{$_.UserName +" "+ $_.Lastname + " " + $_.FirstName}


最後の行だけ、注釈します。
SelectしてもってきたUsersテーブルが$Userに入ります。
そのデータを | でつなぎます。?{} はif文のように使えます。
つまり、渡されたテーブルの1行ごとにUserIdフィールドの内容が "MyID"と同じレコードだけ、
次の%{}ブロックに渡ります。%{}では1行ずつ処理を実行します。
$_ はこの例だと$User.Rowsとほぼ同じですね。

なんか、アプリケーションがたくさん作れそうですね。