我能够执行MySQL sp。在服务器上它工作正常,但当从asp.net调用它时,它不能正常工作。以下是存储过程:
CREATE PROCEDURE `GetCategoryForBackLinkID`(IN BLID int, OUT CatID int)
BEGIN
SELECT CategoryID INTO CatID FROM backlink where BackLinkID = BLID;
END
下面是asp.net代码
MySqlCommand cmd1 = new MySqlCommand("GetCategoryForBackLinkID");
MySqlConnection con1 = new MySqlConnection();
//ConnectionStringSettings mySetting = ConfigurationManager.ConnectionStrings["linkbuilding1Entities3"];
con1.ConnectionString = "server=67.227.183.117;User Id=rammu1;Pwd=eframmu1;database=linkbuilding1;Persist Security Info=True";
cmd1.Connection = con1;
using (cmd1.Connection)
{
cmd1.Connection.Open();
MySqlParameter returnParameter1 = cmd1.Parameters.Add("BLID", MySqlDbType.Int16);
returnParameter1.Direction = ParameterDirection.Input;
returnParameter1.Value = maximumbacklinid;
MySqlParameter returnParameter2 = cmd1.Parameters.Add("CatID", MySqlDbType.Int16);
returnParameter2.Direction = ParameterDirection.Output;
cmd1.ExecuteNonQuery();
CategID = (Int16)returnParameter2.Value;
我得到的错误是
SQL语法中有错误;请查看手册
对应于MySQL服务器版本,以便使用正确的语法
在第1行的“GetCategoryForBackLinkID”附近。
这里可能出了什么问题?
最佳答案
嗯,我不是百分之百确定,但看起来你需要把你的CommandType
财产分类;
cmd1.CommandType = CommandType.StoredProcedure;
由于使用存储过程,因此默认情况下此属性为
Text
。这就是为什么程序认为"GetCategoryForBackLinkID"
字符串是有效的SQL查询,而不是存储过程。将CommandType属性设置为StoredProcedure时,应
将CommandText属性设置为存储过程的名称。这个
当您调用
执行方法。
using(MySqlConnection con1 = new MySqlConnection(connString))
using(MySqlCommand cmd1 = con.CreateCommand())
{
cmd1.CommandType = CommandType.StoredProcedure;
// Add your parameter values.
cmd1.ExecuteNonQuery();
CategID = (int)returnParameter2.Value;
}