我有C#代碼循環訪問.sql
文件並執行其中的內容來設置數據庫。C#,MySQL,ADO.NET,引起語法錯誤的分隔符
一個.sql
文件基本如下:
DROP PROCEDURE IF EXISTS myProc;
DELIMITER $$
CREATE PROCEDURE myProc()
BEGIN
-- procedure stuff goes here
END $$
DELIMITER ;
CALL myProc();
當我輸入到這個MySQL查詢瀏覽器的腳本窗口,它運行完美......一遍又一遍,就像一個希望它。
但是,如果我把字符串轉換成我IDbCommand
並執行它...
connection.Open(); // An IDbConnection
IDbTransaction transaction = connection.BeginTransaction();
using (IDbCommand cmd = connection.CreateCommand())
{
cmd.Connection = connection;
cmd.Transaction = transaction;
cmd.CommandText = line;
cmd.CommandType = CommandType.Text;
try
{
cmd.ExecuteNonQuery();
}
catch (SqlException ex)
{
transaction.Rollback();
return false;
}
}
transaction.Commit();
connection.Close();
...我得到了可怕的例外,1064 ...
你有一個錯誤你的SQL語法;檢查 對應於你的MySQL服務器版本使用 附近「DELIMITER $$ CREATE PROCEDURE MYPROC()開始正確的語法手冊...
所以,問題是......爲什麼我們的MySQL我這樣做沒有問題,但是當我嘗試從C#運行它時,它會失敗?當然,第二個問題是我應該如何解決這個問題。
這很好。從未在我的搜索中看到過。謝謝。 – Brillyints 2009-08-24 21:04:23