• 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;  
                            }  
                        }  
                    }  
                }  
  • 相关阅读:
    2.6.2.MySQL主从复制的原理
    2.4.5 MySQL InnoDB重做与回滚介绍
    PRML读书笔记_绪论曲线拟合部分
    python3_字符串
    PRML读书笔记_绪论
    python3_列表、元组、集合、字典
    linux_软件安装
    shell获取帮助
    linux_查看磁盘与目录容量
    linux_压缩解压命令(zip/tar)
  • 原文地址:https://www.cnblogs.com/zeroone/p/6021329.html
Copyright © 2020-2023  润新知