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 }));
        }
Exemple #3
0
 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);
        }