【问题标题】:MySql storedprocedure not executing frm asp.netMySql 存储过程未从 asp.net 执行
【发布时间】:2014-09-26 16:30:51
【问题描述】:

我能够执行 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”附近。

这里可能有什么问题?

【问题讨论】:

    标签: c# mysql asp.net stored-procedures


    【解决方案1】:

    嗯,我不是 100% 确定,但看起来你需要像 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;
    }
    

    【讨论】:

      【解决方案2】:

      IN 你的连接字符串一个关键字是错误的,写入数据源不是数据库。

      "server=67.227.183.117;User Id=rammu1;Pwd=eframmu1;Data Source=linkbuilding1;Persist Security Info=True";
      

      【讨论】:

        猜你喜欢
        • 2016-02-08
        • 1970-01-01
        • 2014-09-30
        • 2010-11-02
        • 1970-01-01
        • 1970-01-01
        • 2011-05-22
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多