2013-04-11 95 views
2

我正在處理的powershell腳本正試圖針對數據庫運行一些腳本文件(.sql)的內容。我知道數據庫連接正在工作,並且powershell腳本可以查詢數據庫,因爲我已經能夠讓我的腳本確認數據庫中存在記錄。我遇到的問題是讓腳本對數據庫執行插入操作。我的腳本中的相關部分是:Powershell和MySql的問題ExecuteNonQuery

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」方法有什麼問題嗎?

+1

如果您刪除評論,它有幫助嗎?它可能不會在換行符中出現,並將整個文本作爲註釋運行。 – 2013-04-11 22:12:47

+0

是的,就是這樣。我更新了我的腳本以使用/ * */comment風格,它工作正常。如果你想創建一個答案,我會接受它。 – William 2013-04-11 22:58:37

+0

很棒;)回答補充。 – 2013-04-12 08:23:48

回答

1

您應該更換CommandText中的--評論。 MySqlClient可能不會注意到換行符,因此,它將註釋掉整個命令。