调用 MySQL 过程出现异常 "procedure cannot be found"

Calling MySQL Procedure is giving an exception that "procedure cannot be found"

在从 c# 调用过程中显示以下错误

"Procedure or function 'CALL get_Users()'cannot be foundin database 'joomla'."`

代码如下

public ObservableCollection<Users> loadUserData()
        {

            ObservableCollection<Users> UserDetials = new ObservableCollection<Users>();
            Users users;
            using (MySqlConnection Conn = new MySqlConnection(DataBaseConnection))
            {
                Conn.Open();

                MySqlCommand command = new MySqlCommand("CALL `get_Users();", Conn);  // uasing this one it showing Error

                // MySqlCommand command = new MySqlCommand("select * from users", Conn); -- if this code run it's taking data from the database

                command.CommandType = System.Data.CommandType.StoredProcedure;

                using (var cursor = command.ExecuteReader())
                {
                    while (cursor.Read())
                    {
                        users = new Users();
                        users.UserId = Convert.ToInt64(Reader["id"]);
                        users.UserName = Convert.ToString(Reader["Name"]);
                        UserDetials.Add(users);
                    }
                }
            }
            return UserDetials;

        }

你有一个虚假的反引号。使用这个:

MySqlCommand command = new MySqlCommand("CALL get_Users();", Conn);

或者你也可能有一个虚假的下划线。在那种情况下使用:

MySqlCommand command = new MySqlCommand("CALL getUsers();", Conn);

不清楚 get_Users() 到底是什么。也许你应该 post 它的定义,我们会看看发生了什么。

此外,尝试直接从 MySQL 管理控制台执行命令,方法是键入:

use <database-name>;
CALL get_Users();

use <database-name>;
CALL getUsers();

看看它是什么 returns。如果它在管理控制台上不起作用,它可能在其他任何地方都不起作用。

如果我错了请纠正我,但我认为你可以在没有 CALL 关键字和 () 的情况下调用你的存储过程。因为,您已经在 System.Data.CommandType.StoredProcedure 上发出命令。

所以你可以试试 MySqlCommand("get_Users", Conn)