Mam następującą funkcję PS:Dlaczego aplikacja Powershell uważa, że próbuję zwrócić obiekt [] zamiast elementu 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
}
Większość funkcji została usunięta dla zwięzłości. Mam problem jest, kiedy wywołać funkcję tak:
[System.Data.DataTable] $buildData = GetBuildData
pojawia się następujący błąd:
Cannot convert the "System.Object[]" value of type "System.Object[]" to type "System.Data.DataTable".
Dlaczego PowerShell myśleć, że jestem chcąc obiektu [] tablicy zwróconej kiedy jest oczywiste, że zmienną $ dt jest DataTable?
EDIT:
mam dwukrotnie sprawdzane i $dt
nie zawierają danych. Na przykład liczba Rows.Count wynosi 1, która jest oczekiwana.
w jakiej linii pojawia się błąd? komunikat o błędzie powinien zawierać wiersz i numer znaku. Zakładam, że to się dzieje tutaj: $ adapter.Fill ($ dt)? – D3vtr0n
Czy kiedykolwiek próbowałeś użyć operatora ',' jak sugeruje odpowiedź jpmc26? Wpadłem na ten problem i to było rozwiązanie. –
Czy któraś z odpowiedzi rozwiązała Twój problem? Jeśli nie, czy mógłbyś dodać więcej informacji o tym, dlaczego nie działały? – jpmc26