public SelectStatement Where(SelectColumn selectColumn, Operator @operator, string value1, string value2) { WhereColumn whereColumn = new WhereColumn(selectColumn.Join, selectColumn.ColumnDef, selectColumn.Statement, @operator, value1, value2); WhereColumns.Add(whereColumn); return(this); }
public DataSet Execute() { DataSet dataSet = new DataSet(); using (SqlConnection connection = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString)) { connection.Open(); using (SqlCommand command = new SqlCommand("sp_executesql", connection) { CommandType = CommandType.StoredProcedure }) { command.Parameters.Add(new SqlParameter("@statement", SqlDbType.NVarChar, -1) { Value = Statement }); int parameterId = 1; string parameters = ""; foreach (WhereColumn wc in WhereColumns.Where(IsParamRequired)) { parameters += parameters == "" ? "" : ", "; parameters += "@p" + parameterId++ + @" " + wc.ColumnDef.Type; switch (wc.ColumnDef.Type) { case "nvarchar": parameters += String.Format(" ({0})", wc.ColumnDef.Length); break; } } command.Parameters.Add(new SqlParameter("@params", SqlDbType.NVarChar, -1) { Value = parameters }); parameterId = 1; foreach (WhereColumn wc in WhereColumns.Where(IsParamRequired)) { command.Parameters.Add(new SqlParameter("@p" + parameterId++, SqlDbType.NVarChar, -1) { Value = wc.Value1 }); } using (SqlDataAdapter dataAdapter = new SqlDataAdapter(command)) { dataAdapter.Fill(dataSet); } } } return(dataSet); }
public SelectStatement Where(string column, Operator @operator, string value1, string value2) { GetJoinAndColumnDef(column, (join, columnDef) => { WhereColumn whereColumn = new WhereColumn(@join, columnDef, null, @operator, value1, value2); WhereColumns.Add(whereColumn); }); return(this); }
private bool IsJoinRequired(Join join) { //are any of the select query columns for this join Visible or Ordered bool selectColumns = SelectColumns .Any(item => (item.Join == join || (item.DependentOnAliases != null && item.DependentOnAliases.Contains(join.Alias))) && (item.IsVisible || item.OrderByIndex != 0)); bool whereColumns = WhereColumns.Any(item => item.Join == join); //are any of the sub joins required bool subJoinsRequired = Joins .Where(item => item.ParentJoin == join) .Any(IsJoinRequired); return(selectColumns || whereColumns || subJoinsRequired); }