/// <summary> /// Initializes the parameters. /// </summary> /// <param name="parameters"></param> private void InitializeParameters(object[] parameters) { if (parameters == null) { throw new ArgumentNullException("parameters"); } // use... object[] useParameters = new object[parameters.Length]; // walk... for (int index = 0; index < parameters.Length; index++) { // convert it? if (parameters[index] is SqlStatementParameter) { this.Parameters.Add((SqlStatementParameter)parameters[index]); } else { DbType dbType = DbType.String; // mbr - 27-10-2005 - handled dbnull. useParameters[index] = parameters[index]; if (useParameters[index] == null) { useParameters[index] = DBNull.Value; } if (!(useParameters[index] is DBNull)) { if (useParameters[index] is DataTable) { dbType = ConversionHelper.GetDBTypeForClrType(((DataTable)useParameters[index]).Columns[0].DataType); } else { dbType = ConversionHelper.GetDBTypeForClrType(useParameters[index].GetType()); } } // mbr - 27-10-2005 - added debugging... string name = "p" + index.ToString(Cultures.System); try { this.Parameters.Add(new SqlStatementParameter(name, dbType, useParameters[index])); } catch (Exception ex) { throw new InvalidOperationException(string.Format("Failed to initialize parameter '{0}'.", name), ex); } } } }
protected object AddRow(NativeName name, string[] names, params object[] values) { if (names == null) { throw new ArgumentNullException("names"); } if (names.Length == 0) { throw new ArgumentOutOfRangeException("'names' is zero-length."); } if (values == null) { throw new ArgumentNullException("values"); } if (names.Length != values.Length) { throw new InvalidOperationException(string.Format("Length mismatch for 'names' and 'values': {0} cf {1}.", names.Length, values.Length)); } // create... SqlStatement sql = new SqlStatement(); // builder... StringBuilder builder = new StringBuilder(); builder.Append("insert into "); builder.Append(sql.Dialect.FormatTableName(name)); builder.Append(" ("); for (int index = 0; index < names.Length; index++) { if (index > 0) { builder.Append(", "); } builder.Append(sql.Dialect.FormatColumnName(names[index])); } builder.Append(") values ("); for (int index = 0; index < values.Length; index++) { if (index > 0) { builder.Append(", "); } // value... object value = values[index]; if (value == null || (value is DateTime && (DateTime)value == DateTime.MinValue)) { value = DBNull.Value; } // get it... DbType dbType = DbType.String; if (!(value is DBNull)) { dbType = ConversionHelper.GetDBTypeForClrType(value.GetType()); } // value... if (value is DBNull) { builder.Append("null"); } else { // get and add... string paramName = sql.Parameters.GetUniqueParameterName(); builder.Append(sql.Dialect.FormatVariableNameForQueryText(paramName)); sql.Parameters.Add(paramName, dbType, value); } } builder.Append(")"); builder.Append(sql.Dialect.StatementSeparator); // return... builder.Append("select "); builder.Append(sql.Dialect.LastInsertedIdVariableName); builder.Append(sql.Dialect.StatementSeparator); // run... sql.CommandText = builder.ToString(); return(Database.ExecuteScalar(sql)); }
public static void AddValueList <T>(this ISqlStatementArrayBuilder sql, StringBuilder builder, IEnumerable <T> values, ArrayParameterType type) { sql.AddValueList(builder, values, ConversionHelper.GetDBTypeForClrType(typeof(T)), type); }