private SqlDataSourceQuery GetWhereClause(string oldValuesFormatString, bool includeOldValues) { List <SqlDataSourceColumnData> effectiveColumns = this.GetEffectiveColumns(); List <Parameter> parameters = new List <Parameter>(); if (effectiveColumns.Count == 0) { return(null); } StringBuilder commandText = new StringBuilder(); commandText.Append(" WHERE "); int num = 0; DbProviderFactory dbProviderFactory = SqlDataSourceDesigner.GetDbProviderFactory(this.DesignerDataConnection.ProviderName); foreach (SqlDataSourceColumnData data in effectiveColumns) { if (data.Column.PrimaryKey) { if (num > 0) { commandText.Append(" AND "); } num++; this.AppendWhereClauseParameter(commandText, data, oldValuesFormatString); parameters.Add(SqlDataSourceDesigner.CreateParameter(dbProviderFactory, data.GetOldValueWebParameterName(oldValuesFormatString), data.Column.DataType)); } } if (num == 0) { return(null); } if (includeOldValues) { foreach (SqlDataSourceColumnData data2 in effectiveColumns) { if (!data2.Column.PrimaryKey) { commandText.Append(" AND "); num++; this.AppendWhereClauseParameter(commandText, data2, oldValuesFormatString); Parameter item = SqlDataSourceDesigner.CreateParameter(dbProviderFactory, data2.GetOldValueWebParameterName(oldValuesFormatString), data2.Column.DataType); parameters.Add(item); if (data2.Column.Nullable && !SqlDataSourceDesigner.SupportsNamedParameters(dbProviderFactory)) { parameters.Add(item); } } } } return(new SqlDataSourceQuery(commandText.ToString(), SqlDataSourceCommandType.Text, parameters)); }
private string CreateParameterPlaceholder(string oldValueFormatString) { DbProviderFactory dbProviderFactory = SqlDataSourceDesigner.GetDbProviderFactory(this._connection.ProviderName); string parameterPlaceholderPrefix = SqlDataSourceDesigner.GetParameterPlaceholderPrefix(dbProviderFactory); if (!SqlDataSourceDesigner.SupportsNamedParameters(dbProviderFactory)) { return(parameterPlaceholderPrefix); } if (oldValueFormatString == null) { return(parameterPlaceholderPrefix + this.AliasedName); } return(parameterPlaceholderPrefix + string.Format(CultureInfo.InvariantCulture, oldValueFormatString, new object[] { this.AliasedName })); }
private void OnInferParametersButtonClick(object sender, EventArgs e) { if (this._commandTextBox.Text.Trim().Length == 0) { UIServiceHelper.ShowError(base.ServiceProvider, System.Design.SR.GetString("SqlDataSourceQueryEditorForm_InferNeedsCommand")); } else { Parameter[] parameterArray = this._sqlDataSourceDesigner.InferParameterNames(this._dataConnection, this._commandTextBox.Text, this._commandType); if (parameterArray != null) { Parameter[] parameters = this._parameterEditorUserControl.GetParameters(); StringCollection strings = new StringCollection(); foreach (Parameter parameter in parameters) { strings.Add(parameter.Name); } bool flag = true; try { flag = SqlDataSourceDesigner.SupportsNamedParameters(SqlDataSourceDesigner.GetDbProviderFactory(this._dataConnection.ProviderName)); } catch { } if (flag) { List <Parameter> list = new List <Parameter>(); foreach (Parameter parameter2 in parameterArray) { if (!strings.Contains(parameter2.Name)) { list.Add(parameter2); } else { strings.Remove(parameter2.Name); } } this._parameterEditorUserControl.AddParameters(list.ToArray()); } else { List <Parameter> list2 = new List <Parameter>(); foreach (Parameter parameter3 in parameterArray) { list2.Add(parameter3); } foreach (Parameter parameter4 in parameters) { Parameter item = null; foreach (Parameter parameter6 in list2) { if (parameter6.Direction == parameter4.Direction) { item = parameter6; break; } } if (item != null) { list2.Remove(item); } } this._parameterEditorUserControl.AddParameters(list2.ToArray()); } } } }
public SqlDataSourceQuery GetQuery() { SqlDataSourceQuery query; Cursor current = Cursor.Current; try { DbProviderFactory dbProviderFactory; Cursor.Current = Cursors.WaitCursor; if (this._sqlRadioButton.Checked) { SqlDataSourceCommandType text; ICollection is2; if (this._commandTextBox.Text.Trim().Length <= 0) { return(new SqlDataSourceQuery(string.Empty, SqlDataSourceCommandType.Text, new Parameter[0])); } if (string.Equals(this._commandTextBox.Text, this._originalCommand, StringComparison.OrdinalIgnoreCase)) { text = this._commandType; } else { text = SqlDataSourceCommandType.Text; } dbProviderFactory = SqlDataSourceDesigner.GetDbProviderFactory(this._dataConnection.ProviderName); if ((this._editorMode == QueryBuilderMode.Select) || SqlDataSourceDesigner.SupportsNamedParameters(dbProviderFactory)) { Parameter[] c = this._sqlDataSourceDesigner.InferParameterNames(this._dataConnection, this._commandTextBox.Text, text); if (c == null) { return(null); } ArrayList list = new ArrayList(c); is2 = this.MergeParameters(this._parameters, list, SqlDataSourceDesigner.SupportsNamedParameters(dbProviderFactory)); } else { is2 = this._parameters; } return(new SqlDataSourceQuery(this._commandTextBox.Text, text, is2)); } StoredProcedureItem selectedItem = this._storedProcedureComboBox.SelectedItem as StoredProcedureItem; if (selectedItem == null) { return(new SqlDataSourceQuery(string.Empty, SqlDataSourceCommandType.Text, new Parameter[0])); } ArrayList newParameters = new ArrayList(); ICollection is3 = null; try { is3 = selectedItem.DesignerDataStoredProcedure.Parameters; } catch (Exception exception) { UIServiceHelper.ShowError(this._sqlDataSourceDesigner.Component.Site, exception, System.Design.SR.GetString("SqlDataSourceCustomCommandEditor_CouldNotGetStoredProcedureSchema")); return(null); } dbProviderFactory = SqlDataSourceDesigner.GetDbProviderFactory(this._dataConnection.ProviderName); if ((is3 != null) && (is3.Count > 0)) { foreach (DesignerDataParameter parameter in is3) { string name = SqlDataSourceDesigner.StripParameterPrefix(parameter.Name); Parameter parameter2 = SqlDataSourceDesigner.CreateParameter(dbProviderFactory, name, parameter.DataType); parameter2.Direction = parameter.Direction; newParameters.Add(parameter2); } } ICollection parameters = this.MergeParameters(this._parameters, newParameters, SqlDataSourceDesigner.SupportsNamedParameters(dbProviderFactory)); query = new SqlDataSourceQuery(selectedItem.DesignerDataStoredProcedure.Name, SqlDataSourceCommandType.StoredProcedure, parameters); } finally { Cursor.Current = current; } return(query); }