无法找到mysql .net更新存储过程

时间:2011-09-28 09:57:58

标签: .net mysql stored-procedures

我在.net framework 4.0中使用mysql。我在我的数据库中存储过程。我的存储过程调用是:

public DataTable addProductMenu(int myid, string itemname)
    { 
        MySqlConnection connection = new MySqlConnection(connectionString);
        MySqlDataAdapter adapt = new MySqlDataAdapter("updateProductMenu", connection);
        adapt.SelectCommand.CommandType = CommandType.StoredProcedure;
        adapt.SelectCommand.Parameters.AddWithValue("myid", myid);
        adapt.SelectCommand.Parameters.AddWithValue("itemname", itemname);

        DataTable dt = new DataTable();
        adapt.Fill(dt);
        adapt = null;
        if (dt != null && dt.Rows.Count != 0)
        {
            return dt;
        }
        else
        {
            return null;
        }

    }
当我使用insert,select数据库中的命令但不更新时,

代码正在工作。我在mysql查询浏览器中测试了我的程序,并且工作正常。

还尝试使用此代码进行更新查询

public DataTable updateProductMenu(int myid, string itemname)
    { //Veritabanından ürün menüsündeki başlığı güncelle

        MySqlConnection cnx = new MySqlConnection(connectionString);
        MySqlDataAdapter adapter = new MySqlDataAdapter();

        string cmdText = "updateProductMenu";
        MySqlCommand cmd = new MySqlCommand(cmdText, cnx);

        cmd.CommandType = CommandType.StoredProcedure;
        MySqlParameter param;
        param = new MySqlParameter("?myid", MySqlDbType.Int32);
        param.Value = myid;
        param.Direction = ParameterDirection.Input;
        cmd.Parameters.Add(param);

        param = new MySqlParameter("?itemname", MySqlDbType.VarChar);
        param.Value = itemname;
        param.Direction = ParameterDirection.Input;
        cmd.Parameters.Add(param);

        adapter.SelectCommand = cmd;

        DataTable dt = new DataTable();
        adapter.Fill(dt);
        adapter = null;
        if (dt != null && dt.Rows.Count != 0)
        {
            return dt;
        }
        else
        {
            return null;
        }
}

都有错误

Procedure or function '`updateProductMenu`' cannot be found in database '`mydatabase`'.

ADDED -----------------------------------------

用户拥有所有权限。我再次检查。

这是我在web.config文件中的connectionstring ...:

<add name="maktesConn" connectionString="Server = myserver; Port =3306; Database =mydatabase; Uid =mysqlsanatkar; Pwd =*123qsanatq*/;" />

.......这是我班级的一部分......:

public class Mimages
{
    private string connectionString;

    public Mimages()
    {
    connectionString = ConfigurationManager.ConnectionStrings["maktesConn"].ToString();
    }

这是我的存储过程的一部分

DROP PROCEDURE IF EXISTS mydatabase.updateProductMenu $$
CREATE PROCEDURE mydatabase.updateProductMenu (myid INT, itemname VARCHAR(60))
BEGIN
....

2 个答案:

答案 0 :(得分:1)

您是说您可以使用相同的代码调用其他存储过程,或者只是选择并插入命令?

您是否检查了数据库名称和存储过程名称的上限?根据设置,MySql会将名称转换为小写,并区分大小写。

检查db current的安全性?

答案 1 :(得分:0)

解决了问题.... .net的mysql连接器是6.3.7。我将其更新为6.4.4。现在我的所有存储过程都正常工作。感谢您的回复“bang”btw。