Вызов процедуры MySQL дает исключение, что «процедура не может быть найдена» - PullRequest
0 голосов
/ 11 декабря 2018

Во время вызова процедуры из c # он показывает следующую ошибку

"Процедура или функция 'CALL get_Users()' не найдена в базе данных' 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;

        }
  • изображение прикреплено enter image description here

Ответы [ 2 ]

0 голосов
/ 11 декабря 2018

Пожалуйста, исправьте меня, если я ошибаюсь, но я думаю, что вы можете вызвать вашу хранимую процедуру без ключевого слова CALL и ().Так как, вы уже снимаете команду на System.Data.CommandType.StoredProcedure.

Так что вы можете попробовать MySqlCommand("get_Users", Conn)

0 голосов
/ 11 декабря 2018

У вас есть ложный удар.Используйте это:

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

В качестве альтернативы вы также можете иметь поддельное подчеркивание.В этом случае используйте:

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

Не ясно, что на самом деле означает get_Users().Возможно, вам следует опубликовать его определение, и мы увидим, что происходит.

Кроме того, попробуйте выполнить команду непосредственно из консоли администратора MySQL, набрав:

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

или

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

И посмотри, что вернется.Если он не работает из консоли администратора, он, вероятно, не будет откуда-либо еще.

...