zoukankan      html  css  js  c++  java
  • asp.net调用mysql 存储过程 带 out 返回值,返回刚插入数据库中的自增的ID,LAST_INSERT_ID() 的使用

    DELIMITER $$
    
    USE `edt_date`$$
    
    DROP PROCEDURE IF EXISTS `tb_ad_item_ADD`$$
    
    CREATE   PROCEDURE `tb_ad_item_ADD`(p_Title VARCHAR(128),
    p_Href VARCHAR(128),
    p_Status INT,
    p_HitCount INT,
    p_StartTime DATETIME,
    p_EndTime DATETIME,
    p_IsDel BIT,
    OUT p_Out_Id INT 
    )
    BEGIN
      -- 添加一个广告,并且返回新增加的广告的ID
       INSERT INTO `tb_ad_item` (`Title`,`Href`,`Status`,`HitCount`,`StartTime`,`EndTime`,`IsDel`)
       VALUES(p_Title,p_Href,p_Status,p_HitCount,p_StartTime,p_EndTime,p_IsDel);
       SET p_Out_Id = LAST_INSERT_ID();
    END$$
    
    DELIMITER ;
     
    在asp.net里面的代码如下,在.net里面的 参数的顺序,一定要和mysql存储过程里面的顺序一模一样,不能像 mssql那样随便写。
    mysql里面的参数是 ? 来表示,而mssql 是 @ 来表示,如果是有返回值,则一定是要在存储过程执行完毕之后,才能获取到值
     
    /// <summary>增加一条数据,并返回刚才增加的数据的Id
            ///  
            /// </summary>
            public bool Add(EDT.Model.Item model, out int id)
            {
                int rowsAffected;
                MySqlParameter[] parameters = {
                        new MySqlParameter("?p_Title", MySqlDbType.VarChar,128),
                        new MySqlParameter("?p_Href", MySqlDbType.VarChar,128),
                        new MySqlParameter("?p_Status", MySqlDbType.Int32,11),
                        new MySqlParameter("?p_HitCount", MySqlDbType.Int32,11),
                        new MySqlParameter("?p_StartTime", MySqlDbType.Datetime),
                        new MySqlParameter("?p_EndTime", MySqlDbType.Datetime),
                        new MySqlParameter("?p_IsDel", MySqlDbType.Bit),
                        new MySqlParameter("?p_Out_Id", MySqlDbType.Int32)};
    
                parameters[0].Value = model.Title;
                parameters[1].Value = model.Href;
                parameters[2].Value = model.Status;
                parameters[3].Value = model.HitCount;
                parameters[4].Value = model.StartTime;
                parameters[5].Value = model.EndTime;
                parameters[6].Value = model.IsDel;
                parameters[7].Direction = ParameterDirection.Output; //表示这个参数是返回值
    
                rowsAffected = MySQLHelper.ExecuteNonQuery("tb_ad_item_ADD", CommandType.StoredProcedure, parameters);
                id = Convert.ToInt32(parameters[7].Value);//如果是有返回值,则一定是要在存储过程执行完毕之后,才能获取到值
                return rowsAffected > 0 ? true : false;
            }
    
  • 相关阅读:
    关于HDFS默认block块大小
    从计算框架MapReduce看Hadoop1.0和2.0的区别
    Linux的作业管理
    php 随机密码和盐 来自wordpress
    SSH管理(重启 停止 运行 安装)centos7
    卸载iptables 小心了!!怎么关闭和卸载iptables
    mysqld: Out of memory 解决办法(mysql)
    ie6 ie7 ie8 ie9兼容问题终极解决方案
    call_user_func()的参数不能为引用传递 自定义替代方法
    centos 域名硬解析(linux)
  • 原文地址:https://www.cnblogs.com/joeylee/p/2718244.html
Copyright © 2011-2022 走看看