c#調用Mysql帶參數的存儲過程


1.首先創建一個帶參數的存儲過程

①存儲過程名稱=proc_bookinfo 

②存儲過程2個參數 一個in 一個out in參數名稱=ispay out參數名稱=unPaycount

這個存儲過程 根據傳入的未支付字段名稱 輸出未支付的商品數量

DELIMITER $$  
  
USE `bookshop`$$  
  
DROP PROCEDURE IF EXISTS `proc_bookinfo`$$  
  
CREATE DEFINER=``@`` PROCEDURE `proc_bookinfo`(IN ispay VARCHAR(10),OUT unPaycount INT)  
BEGIN  
 SELECT COUNT(*) INTO unPaycount FROM tb_bookinfo AS a,tb_shopbook AS b WHERE b.ispay=ispay;  
 END$$  
  
DELIMITER ; 

2.C#代碼調用該存儲過程

①sql語句只需要寫存儲過程的名稱即可

②2個參數的名稱和數據類型以及數據長度都要和數據庫中定義存儲過程的參數完全相同(大小寫不影響)

③2個參數的Direction屬性賦予對應的類型

④調用ExcuteProc方法執行   即可,輸出值就是傳入的第二個參數

 

StringBuilder sql=new StringBuilder();  
sql.Append("proc_bookinfo");  
           MySqlParameter[] parameters = {  
                   new MySqlParameter("@ispay", MySqlDbType.VarChar,10),  
                   new MySqlParameter("@unPaycount", MySqlDbType.Int32,11)  
                                         };  
           parameters[0].Value ="未付款";  
           parameters[0].Direction = ParameterDirection.Input;  
           parameters[1].Value = 0 ;  
           parameters[1].Direction = ParameterDirection.Output;  
           DbHelperMySQL.ExecuteProc(Convert.ToString(sql), parameters);

 

3.執行數據庫操作的方法

注意:CommandType屬性一定賦值為CommandType.StoredProcedure

 

    public static object ExecuteProc(string SQLString, params MySqlParameter[] cmdParms)  
            {  
                using (MySqlConnection connection = new MySqlConnection(connectionString))  
                {  
                    using (MySqlCommand cmd = new MySqlCommand())  
                    {  
                        try  
                        {  
                              
                            PrepareCommand(cmd, connection, null, SQLString, cmdParms);  
                            cmd.CommandType = CommandType.StoredProcedure;  
                            int rows = cmd.ExecuteNonQuery();  
                            Console.WriteLine("返回值為 "+cmdParms[1].Value);  
                            cmd.Parameters.Clear();  
                            return rows;  
                        }  
                        catch (MySql.Data.MySqlClient.MySqlException e)  
                        {  
                            connection.Close();  
                            throw e;  
                        }  
                    }  
                }  
            }  

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM