###前提・実現したいこと
WindowsPowerShellバージョン:2.0
・WindowsPowerShellにてDBからデータを抽出し、DataTableを返す関数を作成
・関数を呼び出し、DataTable型の変数に格納
⇒エラー発生
関数内ではDataTable型になっているのでreturn時に何かしらの理由で
System.Object[]型になってしまっていることが原因かと推測しています。
どうしたらエラーを回避できるかご教示下さい。よろしくお願いいたします。
発生している問題・エラーメッセージ
"System.Object[]"の値を"System.Object[]"型から"System.Data.DataTable"型に変換できません。 行43:文字17 selectTable <<<< = selectSQL;
該当のソースコード
# DB関係 [System.Data.SqlClient.SqlConnection]$objConnection = $null; [System.Data.SqlClient.SqlCommand]$objCommand = $null; [System.Data.SqlClient.SqlDataAdapter]$objAdapter = $null; [System.Data.DataSet]$objDataset =$null; [System.Data.DataTable] $objTable = $null; [System.Data.DataTable] $selectTable = $null; # 接続情報 [string]$strServer = 'XXX.XXX.XXX.XXXX' [string]$strID = 'id' [string]$strPassword = 'password' [string]$strDatabase = 'database' [string]$strConnectionString = '' #接続文字列を作成 $strConnectionString = @" Data source =$strServer; Initial Catalog=$strDatabase; User ID =$strUserId; Password=$strPassword; "@ function selectSQL() { $selectSQL = "SELECT * FROM MST_Animal"; $objConnection = New-Object -TypeName System.Data.SqlClient.SqlConnection; $objConnection.ConnectionString = $strConnectionString; $objCommand = $objConnection.CreateCommand(); $objCommand.CommandText = $selectSQL $objAdapter = New-Object -TypeName System.Data.SqlClient.SqlDataAdapter $objCommand; $objDataset = New-Object -TypeName System.Data.DataSet; [void]$objAdapter.Fill($objDataset); $objTable = $objDataset.Tables[0]; return $objTable; } $selectTable = selectSQL;
試したこと
・関数内で $objTable.GetType(); を実行し、DataTable型になっていることを確認
・下記を参考に戻り値を配列型に変換
https://ps1.hatenadiary.org/entry/20081119/p1
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2021/10/20 08:34
2021/10/20 09:01
2021/10/20 09:01
2021/10/20 09:10
退会済みユーザー
2021/10/20 11:35
2021/10/20 11:38
退会済みユーザー
2021/10/20 11:44
2021/10/20 11:48
退会済みユーザー
2021/10/20 11:55
2021/10/20 12:05
退会済みユーザー
2021/10/20 12:18 編集
2021/10/20 12:19 編集