调用 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 found
in 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)
在从 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)