我有 C# 代码循环.sql
文件并执行其中的内容来设置数据库。
一个.sql
文件基本如下:
DROP PROCEDURE IF EXISTS myProc;
DELIMITER $$
CREATE PROCEDURE myProc()
BEGIN
-- procedure stuff goes here
END $$
DELIMITER ;
CALL myProc();
当我将它输入到 MySQL 查询浏览器的脚本窗口时,它会完美地运行……一遍又一遍,就像人们想要的那样。
但是,如果我将字符串放入 myIDbCommand
并执行它...
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() BEGIN... 附近使用正确的语法
所以,问题是......为什么 MySQL 让我毫无问题地做到这一点,但是当我尝试从 C# 运行它时,它失败了?当然,第二个问题是我应该如何解决它。