2017-02-08 90 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)")

相关问题