2017-02-08 14 views
0

なぜクエリ結果を変数に格納するのが難しいのか分かりません。SQLクエリ結果を変数に格納する

結果を変数に格納せずにこのスクリプトを実行すると、正しい結果が得られます。しかし、変数に同じ値を格納しようとすると、変数の値はSystem.Data.DataRowになります。私は文字列(スクリプトをクラッシュさせる)、$data_set.Tables[0].Rows[0]、および$data_set.Tables[0].Rows[0]["Value"]に変換しようとしましたが、まだ運がありません。結果を印刷するだけでは不十分です。クエリ結果に基づいて変更を加える必要があります。

私はあなたが行からアイテムを取得する必要があり$max_slide_count = 910980

$slide_id_query = "SELECT MAX(SLIDE_ID) FROM INFOTECHSLIDES.SLIDES;" 
try { 
     Write-Host "Creating Database Connection" 

     #ENABLE MYSQL DRIVER 
     [System.Reflection.Assembly]::LoadWithPartialName("MySql.Data") 

     #CREATE MYSQL CONNECTION 
     $connection = New-Object MySql.Data.MySqlClient.MySqlConnection 
     $connection.ConnectionString = $connection_string 

     #OPEN DB CONNECTION 
     Write-Host "Opening Database Connection" 
     $connection.Open() 

     #RUN MYSQL QUERY 
     $command = New-Object MySql.Data.MySqlClient.MySqlCommand($slide_id_query, $connection) 
     $data_adapter = New-Object MySql.Data.MySqlClient.MySqlDataAdapter($command) 
     $data_set = New-Object System.Data.DataSet 
     $record_count = $data_adapter.Fill($data_set, "data") 

     #STORE RESULT 
     $max_slide_count = $data_set.Tables[0] 

     $data_set.Tables[0]     #RETURNS: MAX(SLIDE_ID) : 910980 
     Write-Host "Result: $max_slide_count" #RETURNS: System.Data.DataRow 

} catch { 
     Write-Host "Could not execute MySql Query" $Error[0] 
} 
+1

いいえ、それは「System.Data.DataRow」を返さない - それは文字列に変換する際の「System.Data.DataRow」 –

+1

があなたに割り当てることによって何を意味するとして、表現されているオブジェクトを返します。変数 ?それは "$ record_count = $ data_adapter.Fill($ data_set、" data ")です。"そのように割り当てる必要はありません。クエリの出力は、すでにデータセット$ data_setに入力されています。 "$ data_set"を読み込もうとすると何のエラーが発生する –

+0

@ MathiasR.Jessenそう、そのオブジェクトの値を取得しようとしましたが、正しく実行してはいけません。 – gregnnylf94

答えて

0

をしたいです。
$max_slide_count = $data_set.Tables[0].Rows[0].Item("MAX(SLIDE_ID)")

関連する問題