【问题标题】:Cannot Call Mysql store procedure on C#无法在 C# 上调用 Mysql 存储过程
【发布时间】:2015-12-09 23:46:49
【问题描述】:

我正在使用 mysql 5.6 版本和 C# 我创建了存储过程调用 PWITEMS()。

delimiter //
create procedure PWITEMS() 
begin 
select Jw_ItemName,Jw_ItemID FROM pawning.jewelry_items;
end;//
delimiter ;

当我调用该程序时,它会给出错误:

ERROR [42000] [MySQL][ODBC 5.3(w) Driver][mysqld-5.6.26-log]你有 SQL 语法错误;检查与您对应的手册 MySQL 服务器版本,用于在“NewPWITEMS”附近使用正确的语法 第 1 行

我的 C# 代码在这里:

OdbcDataReader dr;
OdbcConnection cnn = new OdbcConnection(Form1.dbconn.str);
OdbcCommand cmd = new OdbcCommand("NewPWITEMS", cnn);
cmd.CommandType = CommandType.StoredProcedure;
cnn.Open();
dr = cmd.ExecuteReader();
while (dr.Read())
{
    cmbJewType.Items.Add(dr[0].ToString());
}

dr.Dispose();
cnn.Close();
cmd.Dispose();

【问题讨论】:

  • 欢迎来到 Stack Overflow。您能否说明NewPWITEMS 程序的定义?阅读FAQHow to Askhelp center 作为开始..
  • 您在连接字符串中使用的用户是否有权访问该过程?
  • call newpwitems,不仅仅是newpwitems

标签: c# mysql


【解决方案1】:

该命令将是 MySQL

CALL PWITEMS

(我注意到您的定义是针对 PWITEMS,而不是 NewPWITEMS)

请参阅下面的评论 - ODBC 文档指定正确的方法是用大括号括住调用:http://vieka.com/esqldoc/esqlref/htm/odbcprocedure_calls.htm

【讨论】:

  • 你改成 CALL PWITEMS
  • 或者试试 OdbcCommand cmd = new OdbcCommand("{CALL PWITEMS()}", cnn);
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-30
  • 2012-06-15
  • 1970-01-01
  • 1970-01-01
  • 2014-07-23
相关资源
最近更新 更多