Exemplo n.º 1
0
        /// <summary>
        /// 执行新增语句,并返回最新的自增ID值。
        /// </summary>
        /// <param name="connKey">连接配置名称</param>
        /// <param name="type">执行类型</param>
        /// <param name="execute">执行对象</param>
        /// <param name="parms">参数</param>
        /// <returns></returns>
        public int ExecuteInsertIdentity(IExecuteObject execute, CommandType type = CommandType.Text, string connKey = null, params IDbDataParameter[] parms)
        {
            try {
                this.Open(connKey);
                this.Command.Transaction = this.Connection.BeginTransaction();
                this.Command.CommandType = type;
                this.Command.CommandText = ProcessSqlString(execute.CreateInsertSQL());
                JoinParameters(parms, true);
                this.Command.ExecuteNonQuery();

                this.Command.CommandType = CommandType.Text;
                this.Command.CommandText = execute.CreateIdentitySQL();
                object val    = this.Command.ExecuteScalar();
                int    dataId = Convert.ToInt32(val);

                this.Command.Transaction.Commit();

                return(dataId);
            } catch (Exception ex) {
                this.Command.Transaction.Rollback();
                throw ShowError(ex, execute.ExecuteType + ":" + execute.GetExecuteSQL());
            }
        }