首页 > 代码库 > c#调用Mysql带参数的存储过程
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 =http://www.mamicode.com/"未付款"; parameters[0].Direction = ParameterDirection.Input; parameters[1].Value = http://www.mamicode.com/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; } } } }
c#调用Mysql带参数的存储过程
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。