首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法从MySql执行c#存储过程

问无法从MySql执行c#存储过程
EN

Stack Overflow用户
提问于 2014-08-07 09:10:01
回答 1查看 534关注 0票数 1

In MySql:

代码语言:javascript
复制
DELIMITER //

DROP PROCEDURE IF EXISTS `testdb`.`Check_UserId_Sproc` //
CREATE PROCEDURE `testdb`.`Check_UserId_Sproc` (IN User_Id NVARCHAR(100))
BEGIN
 select count(*) from demo_user where userid = User_Id;
END //

DELIMITER ;

In C#:

代码语言:javascript
复制
public DataTable ExecuteParameterizedSelectCommand(string CommandName, CommandType cmdType,MySqlParameter[] param)
        {
            DataTable table = new DataTable();
            string CS = ConfigurationManager.ConnectionStrings["DBCS"].ConnectionString;

            using(MySqlConnection con = new MySqlConnection(CS))
            {
                using (MySqlCommand cmd = con.CreateCommand())
                {
                    cmd.CommandType = CommandType.Text;
                    cmd.CommandText = CommandName;
                    cmd.Parameters.AddRange(param);

                    try
                    {
                        if (con.State != ConnectionState.Open)
                        {
                            con.Open();
                        }

                        using (MySqlDataAdapter da = new MySqlDataAdapter(cmd))
                        {
                            da.Fill(table);
                        }
                    }
                    catch
                    {
                        throw;
                    }

                    return table;
                }
            }
        }


    public DataTable checkExistingUserId()
            {
                MySqlDBHelper oHelper = new MySqlDBHelper();
                MySqlParameter[] parameters = new MySqlParameter[]
                {
                    new MySqlParameter("User_Id", 'DemoId')
                };
                return oHelper.ExecuteParameterizedSelectCommand("Check_UserId_Sproc", CommandType.StoredProcedure, parameters);
            }

当我尝试执行checkExistingUserId(),时,我会得到以下异常:

代码语言:javascript
复制
Incorrect number of arguments for PROCEDURE testdb.Check_UserId_Sproc; expected 1, got 0

也许我做了一个愚蠢的错误,但我无法弄清楚。我是mysql的新手,我试着解决这个问题。

当我调试时,数组包含了如下图所示的参数,但是SP没有收集它。

​

​

提前感谢

EN

回答 1

Stack Overflow用户

发布于 2014-08-07 11:01:10

在您的代码中:

cmd.CommandType = CommandType.Text;

应该是

代码语言:javascript
复制
cmd.CommandType = cmdType;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25178490

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档