c# - 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# 中使用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();
}
推荐阅读
- c# - 当前不支持“System.String.Split”方法的这种重载
- reactjs - Graphql 订阅出错并出现错误:“订阅握手期间出错”
- html - org.thymeleaf.exceptions.TemplateProcessingException:评估 SpringEL 表达式的异常:“#request.userPrincipal.name”
- ssl - 为什么 nodeMCU tls mbed 库从 Pushbullet API 服务器收到错误 40(握手失败)?
- c# - EF6 代码优先 - 具有多个表的存储过程层次结构查询
- laravel-5 - Blade 不接受变量
- c# - 如何修复 C# 到 OracleDB 的连接代码中的“System.TypeInitializationException”错误
- c# - 从从 vscode 启动的程序中获取数据
- c# - 在 DependencyProperty 中使用数据绑定
- javascript - 图像滑块html css