2011-09-28 37 views
0

我正在使用mysql與.net框架4.0。我在我的數據庫中存儲了過程。我的存儲過程調用是:mysql .net更新存儲過程無法找到

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; 
     } 

    } 

代碼工作時,我使用插入,選擇數據庫中的命令,但不更新。我在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 
.... 

回答

0

解決了這個問題....用於.net的mysql連接器是6.3.7。我更新到6.4.4。現在我所有的存儲過程都在運行。感謝您的回覆「砰」btw。

1

你是說你可以調用其他存儲過程使用相同的代碼,或只是選擇我的存儲過程的一部分nd插入命令?

您是否在數據庫名稱和存儲過程名稱上選中了大寫?取決於設置,MySql會將名稱轉換爲小寫並區分大小寫。

檢查安全數據庫電流?

+0

我可以用相同的代碼調用其他存儲過程呀。當我的存儲過程中有更新查詢時,它不起作用,並顯示我之前說過的錯誤。我查了帽子,他們沒事。但我不明白你的安全意味着什麼? – gesirdekatwork

+0

檢查您正在使用的mysql用戶帳戶是否具有EXECUTE特權。 也dubbelcheck大寫正確的代碼和連接字符串! – bang

+0

我編輯了這個問題.. – gesirdekatwork