我有以下的PS功能:爲什麼Powershell認爲我試圖返回一個對象[]而不是DataTable?
function GetBuildData {
[System.Data.SqlClient.SqlConnection] $conn = New-Object System.Data.SqlClient.SqlConnection
[System.Data.SqlClient.SqlCommand] $cmd = New-Object System.Data.SqlClient.SqlCommand
[System.Data.SqlClient.SqlDataAdapter] $adapter = New-Object System.Data.SqlClient.SqlDataAdapter
[System.Data.DataTable] $dt = New-Object System.Data.DataTable
try {
[string] $connStr = "myConnectionString"
$conn.ConnectionString = $connStr
$cmd.Connection = $conn
$cmd.CommandText = "SELECT * FROM TestTable"
$conn.Open
$adapter.SelectCommand = $cmd
$adapter.Fill($dt)
$conn.Close
}
catch [system.exception]
{
Write-Host $_
}
finally {
$adapter.Dispose
$cmd.Dispose
$conn.Dispose
}
return $dt
}
大部分功能已經爲簡潔起見被刪除。我的問題是,當我調用該函數像這樣:
[System.Data.DataTable] $buildData = GetBuildData
我得到以下錯誤:
Cannot convert the "System.Object[]" value of type "System.Object[]" to type "System.Data.DataTable".
爲什麼Powershell的認爲,我想返回的對象[]數組當很明顯$ dt變量是一個DataTable?
編輯:
我有雙重檢查,並$dt
確實包含數據。例如,Rows.Count的數量是1,這是預期的。
發生什麼錯誤?錯誤信息應該提供行和字符號。我假設它發生在這裏:$ adapter.Fill($ dt)?? – D3vtr0n
你有沒有嘗試','操作符jpmc26的答案建議?我遇到了這個問題,那就是解決方案。 –
有沒有解決你的問題的答案?如果不是,可否添加一些關於他們爲什麼不工作的更多信息? – jpmc26