私が取り組んでいる PowerShell スクリプトは、データベースに対していくつかのスクリプト ファイル (.sql) の内容を実行しようとしています。データベースにレコードが存在することをスクリプトに確認させることができたので、データベース接続が機能しており、powershell スクリプトがデータベースにクエリを実行できることはわかっています。私が抱えている問題は、データベースに対して挿入を実行するスクリプトを取得することです。私のスクリプトの関連部分は次のとおりです。
function RunNonQuery($commandText) {
$conn = New-Object MySql.Data.MySqlClient.MySqlConnection
$conn.ConnectionString = GetConnString
$conn.Open()
$cmd = $conn.CreateCommand()
$cmd.CommandText = $commandText
$rowsAffected = $cmd.ExecuteNonQuery()
$cmd.Dispose()
$conn.Close()
return $rowsAffected
}
「GetConnString」は、アクティブな接続文字列を返す単なるメソッドです。$commandText 変数の内容は次のとおりです。
-- CreationDate=4/11/2013 1:04:51 PM
INSERT INTO Patch (PatchName) VALUES ('TestFromPatchFile');
PowerShell スクリプトをデバッグすることで、コマンド テキストが "RunNonQuery" メソッドに正しく渡されていることがわかります。データベースに対してスクリプトを実際に実行しているようには見えません。$rowsAffected は常に 0 で、実行時にエラーはありません。実際のデータベースを見ると、挿入が行われていないことが確認できます。
私の「RunNonQuery」メソッドの何が問題なのか知っている人はいますか?