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
mysql存储过程使用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;
}
}
}
}
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论