private IDbDataParameter[] SetupCommand(IDbCommand cmd, object[] parameters, int[] outputs, StringBuilder buf) { int size = (outputs == null) ? 0 : outputs.Length; IDbDataParameter[] outputParams = new IDbDataParameter[size]; int j = 0; if (parameters != null && parameters.Length > 0) { buf.Append(" "); for (int i = 0; i < parameters.Length; i++) { int x = i + 1; if (i > 0) { buf.Append(","); } buf.Append("@").Append(x); IDbDataParameter p = cmd.CreateParameter(); p.ParameterName = string.Format("@{0}", x); SqlUtils.PrepParam(p, parameters[i]); if (outputs != null && Array.IndexOf <int>(outputs, i) > -1) { buf.Append(" output"); p.Direction = ParameterDirection.InputOutput; outputParams[j++] = p; } cmd.Parameters.Add(p); } } return(outputParams); }
public virtual int Update(IDb db, ICollection items) { ErrorIfSPResult(); int result = 0; string sql = GetUpdateSql(); IDbCommand cmd = null; FireTriggers(items, new TriggerEventArgs(db, Timing.BeforeUpdate)); try { cmd = db.Connection.CreateCommand(); cmd.CommandText = sql; cmd.CommandType = CommandType.Text; cmd.Transaction = db.Transaction; foreach (SqlColumn column in columns) { // add parameters if (column.IsReadable && !(column.IsID && !column.IsPK)) { string prefix = column.IsPK ? ":pk" : ":"; IDbDataParameter p = cmd.CreateParameter(); p.ParameterName = string.Format("{0}{1}", prefix, column.Ordinal); SqlUtils.PrepParam(p, column.DataType); cmd.Parameters.Add(p); } } cmd.Prepare(); foreach (object item in items) { if (item != null) { foreach (SqlColumn column in columns) { // assign values to parameters if (column.IsReadable && !(column.IsID && !column.IsPK)) { string prefix = column.IsPK ? ":pk" : ":"; string pname = string.Format("{0}{1}", prefix, column.Ordinal); IDbDataParameter p = (IDbDataParameter)cmd.Parameters[pname]; column.SetParameterValue(p, item); } } TraceObject.Instance.TraceCommand(cmd); result += cmd.ExecuteNonQuery(); } } } finally { if (cmd != null) { cmd.Dispose(); cmd = null; } } FireTriggers(items, new TriggerEventArgs(db, Timing.AfterUpdate)); return(result); }
public override void SetParameters(IDbCommand cmd) { IList values = (IList)Value; for (int i = 0; i < values.Count; i++) { int j = index + i; IDbDataParameter p = cmd.CreateParameter(); p.ParameterName = string.Format(":{0}", j); SqlUtils.PrepParam(p, values[i]); cmd.Parameters.Add(p); } }
public virtual void SetParameters(IDbCommand cmd) { if (HasQuery) { query.SetParameters(cmd); } else { string pn = string.Format("@{0}", index); IDbDataParameter p = cmd.CreateParameter(); p.ParameterName = pn; SqlUtils.PrepParam(p, val); cmd.Parameters.Add(p); } }
public virtual void Exec(IDb db, string procName, object[] parameters, IList list) { int len = (parameters == null) ? 0 : parameters.Length; string sql = GetExecSql(procName, len); IDbCommand cmd = null; IDataReader reader = null; try { cmd = db.Connection.CreateCommand(); cmd.CommandText = sql; cmd.CommandType = CommandType.Text; cmd.Transaction = db.Transaction; for (int i = 0; i < len; i++) { int j = i + 1; IDbDataParameter p = cmd.CreateParameter(); p.ParameterName = string.Format(":{0}", j); SqlUtils.PrepParam(p, parameters[i]); cmd.Parameters.Add(p); } TraceObject.Instance.TraceCommand(cmd); reader = cmd.ExecuteReader(); FillByName(reader, list); } finally { if (reader != null) { if (!reader.IsClosed) { reader.Close(); } reader.Dispose(); reader = null; } if (cmd != null) { cmd.Dispose(); cmd = null; } } FireTriggers(list, new TriggerEventArgs(db, Timing.AfterActivate)); }
public virtual int Insert(IDb db, ICollection items) { ErrorIfSPResult(); int result = 0; string sql = GetInsertSql(); IDbCommand cmd = null; IDbDataParameter idP = null; FireTriggers(items, new TriggerEventArgs(db, Timing.BeforeInsert)); try { cmd = db.Connection.CreateCommand(); cmd.CommandText = sql; cmd.CommandType = CommandType.Text; cmd.Transaction = db.Transaction; foreach (SqlColumn column in columns) { // add parameters if (column.IsReadable && !column.IsID) { IDbDataParameter p = cmd.CreateParameter(); p.ParameterName = string.Format(":{0}", column.Ordinal); SqlUtils.PrepParam(p, column.DataType); cmd.Parameters.Add(p); } } if (identity != null) { // add output parameter for identity column idP = cmd.CreateParameter(); idP.ParameterName = ":id"; SqlUtils.PrepParam(idP, identity.DataType); idP.Direction = ParameterDirection.Output; cmd.Parameters.Add(idP); } cmd.Prepare(); foreach (object item in items) { if (item == null) { continue; } foreach (SqlColumn column in columns) { // assign values to all parameters if (column.IsReadable && !column.IsID) { string pname = string.Format(":{0}", column.Ordinal); IDbDataParameter p = (IDbDataParameter)cmd.Parameters[pname]; column.SetParameterValue(p, item); } } TraceObject.Instance.TraceCommand(cmd); result += cmd.ExecuteNonQuery(); if (identity != null) { // write generated identity value back into the object identity.SetValue(item, idP.Value); } } } finally { if (cmd != null) { cmd.Dispose(); cmd = null; } } FireTriggers(items, new TriggerEventArgs(db, Timing.AfterInsert)); return(result); }