laopiao650 2016-07-04 06:44 采纳率: 0%
浏览 1143

C#拼接mysql存储过程语句无法执行

如题,C#拼接mysql的存储过程语句,如果将语句输出,直接在mysql控制台,
可以正常执行,但是在程序中执行会报错!

 DeleteProcedureName = "proc_del_" + tbName;
                string str = "";
                string sql = "";
                string str3 = "";
                for (int i = 0; i < checkedFields.Count; i++)
                {
                    if (i == checkedFields.Count - 1)
                    {
                        str = str + checkedFields[i] + "=a" + checkedFields[i];
                        str3 += "IN `a" + checkedFields[i] + "` " + checkedType[i];
                    }
                    else
                    {
                        str = str + checkedFields[i] + "=a" + checkedFields[i] + " and ";
                        str3 += "IN `a" + checkedFields[i] + "` " + checkedType[i] + ",";
                    }
                }
                sql = "delete from " + tbName + " where " + str + ";";
                DeleteProcedure = string.Format(@"DROP PROCEDURE IF EXISTS `{0}`;
DELIMITER //
CREATE DEFINER=`{1}`@`{2}` PROCEDURE `{3}`({4})
BEGIN
{5}
END
//
DELIMITER ;
", DeleteProcedureName, userId, serverName, DeleteProcedureName, str3, sql);

图片说明

我是用MySqlCommand的ExecuteNonQuery()方法执行的存储过程语句

  • 写回答

1条回答 默认 最新

  • focusnothing 2016-07-04 08:18
    关注

    这个错误好像发生在传递第四个参数的时候
    str3的内容是什么? 这个地方作为procedure的参数肯定有要求的格式的,
    你传的str3肯定是错误的.

    评论

报告相同问题?

悬赏问题

  • ¥15 matlab实现基于主成分变换的图像融合。
  • ¥15 对于相关问题的求解与代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料
  • ¥15 使用R语言marginaleffects包进行边际效应图绘制
  • ¥20 usb设备兼容性问题
  • ¥15 错误(10048): “调用exui内部功能”库命令的参数“参数4”不能接受空数据。怎么解决啊