2017-02-08 27 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» - он возвращает объект, который при преобразовании в строку, представлено как s «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)")