首页 > 解决方案 > Mysql定界符语法错误只会在c#上出错

问题描述

我已经创建了程序代码。当我尝试在 phpmyadmin 中运行创建过程代码时,它是有效的。但是当我尝试在 c# 中运行时,它会返回这样的错误:

您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以了解在“DELIMITER !!”附近使用的正确语法

创建过程代码:

DELIMITER ;;
CREATE DEFINER=`root`@`localhost` PROCEDURE `update_alldoctorname`(IN `p_doktor` VARCHAR(65) CHARSET latin5, IN `p_eski` VARCHAR(65) CHARSET latin5)
    NO SQL
    BEGIN
UPDATE users SET hekim=p_doktor WHERE hekim=p_eski;
UPDATE tedavi SET tedavi_doktor=p_doktor WHERE tedavi_doktor=p_eski;
UPDATE medikal SET doktor=p_doktor WHERE doktor=p_eski;
UPDATE cek_devreden SET unvan=p_doktor WHERE unvan=p_eski;
END
;;
DELIMITER ;

我该如何解决?

标签: c#mysqlphpmyadmin

解决方案


您不能在 C# 中使用DELIMITER ;;with 语法。MySqlCommand相反,只需使用CREATE PROCEDURE语句的主体作为MySqlCommand.CommandText并执行它:

using (var command = yourConnection.CreateCommand())
{
    command.CommandText = @"CREATE DEFINER=`root`@`localhost` PROCEDURE `update_alldoctorname`(IN `p_doktor` VARCHAR(65) CHARSET latin5, IN `p_eski` VARCHAR(65) CHARSET latin5)
    NO SQL
    BEGIN
        UPDATE users SET hekim=p_doktor WHERE hekim=p_eski;
        UPDATE tedavi SET tedavi_doktor=p_doktor WHERE tedavi_doktor=p_eski;
        UPDATE medikal SET doktor=p_doktor WHERE doktor=p_eski;
        UPDATE cek_devreden SET unvan=p_doktor WHERE unvan=p_eski;
    END";
    command.ExecuteNonQuery();
}

推荐阅读