小编Bri*_*nts的帖子

C#,MySQL,ADO.NET,分隔符导致语法错误

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

c# mysql ado.net sql-scripts database-restore

6
推荐指数
2
解决办法
3425
查看次数

标签 统计

ado.net ×1

c# ×1

database-restore ×1

mysql ×1

sql-scripts ×1