我有C#代码循环.sql文件并执行其中的内容来设置数据库.
一个.sql文件基本如下:
DROP PROCEDURE IF EXISTS myProc;
DELIMITER $$
CREATE PROCEDURE myProc()
BEGIN
-- procedure stuff goes here
END $$
DELIMITER ;
CALL myProc();
Run Code Online (Sandbox Code Playgroud)
当我将它输入到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();
Run Code Online (Sandbox Code Playgroud)
......我得到了可怕的例外1064 ......
您的SQL语法有错误; 检查与MySQL服务器版本对应的手册,以便在'DELIMITER $$ CREATE PROCEDURE …