public virtual IDbDataParameter AddDbParameter(IDbCommand command, SqlPlaceHolder ph, object value) { var prmIndex = command.Parameters.Count; var prm = command.CreateParameter(); prm.ParameterName = GetSqlParameterName(prmIndex); prm.Direction = ph.ParamDirection; prm.Value = value ?? DBNull.Value; ph.PreviewParameter?.Invoke(prm, ph); command.Parameters.Add(prm); return(prm); }
private string FormatAsLiteral(SqlPlaceHolder ph, object value) { if (value == null || value == DBNull.Value) { return(SqlTerms.Null.Text); } if (ph.FormatLiteral == null) { var stype = _driver.TypeRegistry.GetDbTypeDef(value.GetType()); ph.FormatLiteral = stype.ToLiteral; } return(ph.FormatLiteral(value)); }
public override IDbDataParameter AddDbParameter(IDbCommand command, SqlPlaceHolder ph, object value) { if (value != null && value != DBNull.Value) { var vt = value.GetType(); //MySql does not like too precise timespan values, so we rough it to milliseconds if (vt == typeof(TimeSpan) || vt == typeof(TimeSpan?)) { var ts = (TimeSpan)value; value = new TimeSpan(ts.Hours, ts.Minutes, ts.Seconds); } } return(base.AddDbParameter(command, ph, value)); }
/* * public override string GetEmptyListLiteral(DbTypeDef elemTypeDef) { * var pgDbType = elemTypeDef.Name; * var emptyList = string.Format("SELECT CAST(NULL AS {0}) WHERE 1=0", pgDbType); * return emptyList; * } */ public override IDbDataParameter AddDbParameter(IDbCommand command, SqlPlaceHolder ph, object value) { var prm = (NpgsqlParameter)base.AddDbParameter(command, ph, value); switch (ph) { case SqlListParamPlaceHolder lph: // For array parameters PG requires setting NpgsqlDbType to combination of Array and pg-dbType for element var pgDbType = (NpgsqlDbType)lph.ElementTypeDef.ProviderDbType; prm.NpgsqlDbType = NpgsqlDbType.Array | pgDbType; break; } return(prm); }
public override IDbDataParameter AddDbParameter(IDbCommand command, SqlPlaceHolder ph, object value) { var parameter = base.AddDbParameter(command, ph, value); // force DbType to datetime2 switch (parameter.Direction) { case ParameterDirection.Input: case ParameterDirection.InputOutput: if (parameter.DbType == DbType.DateTime) { parameter.DbType = DbType.DateTime2; } break; } //switch direction return(parameter); }
// Parameters containing lists need special setup private void ConfigureListParameter(IDbDataParameter prm, SqlPlaceHolder ph) { var sqlPrm = (SqlParameter)prm; // convert to list of SqlDataRecord sqlPrm.Value = ConvertListParameterValue(sqlPrm.Value, (SqlListParamPlaceHolder)ph); sqlPrm.SqlDbType = SqlDbType.Structured; var msDriver = (MsSqlDbDriver)this.Driver; sqlPrm.TypeName = msDriver.SystemSchema + "." + MsSqlDbDriver.ArrayAsTableTypeName; /* * // Table-valued parameters cannot be DBNull; for empty list set it to null * if(sqlPrm.Value == DBNull.Value) * sqlPrm.Value = null; */ }
private string FormatPlaceHolder(SqlPlaceHolder placeHolder, object arg) { switch (placeHolder) { case SqlColumnValuePlaceHolder colPh: return(FormatColumnValuePlaceHolder(colPh, (EntityRecord)arg)); case SqlLinqParamPlaceHolder paramPh: return(FormatLinqPlaceHolder(paramPh, arg)); case SqlListParamPlaceHolder listPh: return(FormatListPlaceHolder(listPh, arg)); default: Util.Throw($"Unexpected SQL placeholder type {placeHolder.GetType()}"); return(null); } }
private IDataParameter AddParameter(SqlPlaceHolder ph, object value) { return(_sqlDialect.AddDbParameter(_dbCommand, ph, value)); }