我有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