zoukankan      html  css  js  c++  java
  • 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;  
                            }  
                        }  
                    }  
                }  
  • 相关阅读:
    期望
    更改开机默认操作系统及等待时间修改
    Python排序
    Python IDLE入门 + Python 电子书
    Python基础教程——1基础知识
    Java:谈谈protected访问权限
    三星I9100有时不能收发彩信完美解决!中国移动
    java继承的权限问题
    Python基础教程——2列表和元组
    访问控制和继承(Java)
  • 原文地址:https://www.cnblogs.com/zeroone/p/6021329.html
Copyright © 2011-2022 走看看