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;
                        }
                    }
                }
            }  
时间: 2024-10-10 02:03:19

c#调用Mysql带参数的存储过程的相关文章

MySQL带参数的存储过程小例子

http://wwty.iteye.com/blog/698239 mysql存储过程也提供了对异常处理的功能:通过定义HANDLER来完成异常声明的实现 语法如下: DECLARE handler_type HANDLER FOR condition_value[,...] sp_statement handler_type: CONTINUE | EXIT condition_value: SQLSTATE [VALUE] sqlstate_value | condition_name |

带参数的存储过程

创建带参数的sql存储过程:创建带参数的存储过程首先要在存储过程中声明该参数,每个存储过程参数都必须用惟一的名称进行定义.与标准的Transact-SQL变量相同,参数名必须以@为前缀,创建带参数的存储过程创建带参数的存储过程首先要在存储过程中声明该参数,每个存储过程参数都必须用惟一的名称进行定义.与标准的Transact-SQL变量相同,参数名必须以@为前缀,并且遵从对象标识符规则.当用户不提供该参数的值时可以使用一个默认值来代替.在执行带参数的存储过程时,既可以通过显式指定参数名称并赋予适当

oracle存储过程(带参数的存储过程)

带参数的存储过程 举例:为指定的员工涨100元的工资,打印涨前和涨后的工资 如果带参,需要指定是输入参数还是输出参数 create or replace procedure raisesalary(eno in number) as ---定义一个变量保存涨前的薪水,引用emp中sal的类型作为psal的类型 psal emp.sal%type; begin ---得到员工涨前的薪水 select sal into psal from emp where empno=eno; ---给该员工涨1

shell脚本调用带参数的存储过程

主要有 #!/bin/bash source /etc/profile source ~/.bash_profile ################################################################## #功能描述:调用带有输入参数和输出参数的存储过程 #执行周期:日 # CRONTAB: * 1 * * * * ${prog_path}CALL_PRODEDURE.sh >> ${prog_path}CALL_PRODEDURE.log 2&a

在C#中怎么调用带参数的存储过程啊??

1)执行一个没有参数的存储过程的代码如下:SqlConnection conn=new SqlConnection(“connectionString”);SqlDataAdapter da = new SqlDataAdapter();da.selectCommand = new SqlCommand();da.selectCommand.Connection = conn;da.selectCommand.CommandText = "NameOfProcedure";da.sel

用JAVA调用Mysql数据库,数据存储过程的封装与调用;

1.存储过程的封装:右键函数--新增函数--选择进程(进程是没有返回值的)或者选择函数(函数是有返回值的) 2.在这里我们选择进程--进入后点击下一步 模式中有IN(往里输入参数),OUT(往外输出参数),INOUT,在这里我们通常使用的就是IN和OUT,如果什么也不写系统默认为IN. 建立好函数之后我们既要把要执行的命令封装到函数里,例如: 注意:在写完一条语句后要加分号,参数varchar类型后要加上长度. 实例: package com.inba.maya.cunchu; import j

在Java中调用带参数的存储过程

JDBC调用存储过程: CallableStatement 在Java里面调用存储过程,写法那是相当的固定: Class.forName(.... Connection conn = DriverManager.getConnection(.... /** *p是要调用的存储过程的名字,存储过程的4个参数,用4个?号占位符代替 *其余地方写法固定 */ CallableStatement cstmt = conn.prepareCall("{call p(?,?,?,?)}"); /*

ado.net 调用带参数的存储过程

String connString = "Data Source = localhost; Initial Catalog = hkjc;User ID = sa;Pwd = 123";            SqlConnection conn = new SqlConnection(connString);            conn.Open();            SqlCommand cmd = new SqlCommand("GetManagement&q

20150825 C# 调用带参数的存储过程 模板

////// exec proceudre2                        //System.Data.SqlClient.SqlConnection sqlcon = new System.Data.SqlClient.SqlConnection("server=(local);database=pubs;uid=sa;pwd=;");                        System.Data.SqlClient.SqlConnection sqlcon