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 }));
        }
        protected bool CheckValidProvider()
        {
            DesignerDataConnection dataConnection = this.DataConnection;

            try
            {
                SqlDataSourceDesigner.GetDbProviderFactory(dataConnection.ProviderName);
                return(true);
            }
            catch (Exception exception)
            {
                UIServiceHelper.ShowError(base.ServiceProvider, exception, System.Design.SR.GetString("SqlDataSourceConnectionPanel_ProviderNotFound", new object[] { dataConnection.ProviderName }));
                return(false);
            }
        }
        public SqlDataSourceQuery GetUpdateQuery(string oldValuesFormatString, bool includeOldValues)
        {
            if (!this.CanAutoGenerateQueries())
            {
                return(null);
            }
            StringBuilder builder = new StringBuilder("UPDATE ");

            builder.Append(this.GetTableName());
            builder.Append(" SET ");
            List <SqlDataSourceColumnData> effectiveColumns = this.GetEffectiveColumns();
            List <Parameter> parameters = new List <Parameter>();
            bool             flag       = true;

            foreach (SqlDataSourceColumnData data in effectiveColumns)
            {
                if (!data.Column.PrimaryKey)
                {
                    if (!flag)
                    {
                        builder.Append(", ");
                    }
                    builder.Append(data.EscapedName);
                    builder.Append(" = ");
                    builder.Append(data.ParameterPlaceholder);
                    flag = false;
                    DbProviderFactory dbProviderFactory = SqlDataSourceDesigner.GetDbProviderFactory(this.DesignerDataConnection.ProviderName);
                    parameters.Add(SqlDataSourceDesigner.CreateParameter(dbProviderFactory, data.WebParameterName, data.Column.DataType));
                }
            }
            if (flag)
            {
                return(null);
            }
            SqlDataSourceQuery whereClause = this.GetWhereClause(oldValuesFormatString, includeOldValues);

            if (whereClause == null)
            {
                return(null);
            }
            builder.Append(whereClause.Command);
            foreach (Parameter parameter in whereClause.Parameters)
            {
                parameters.Add(parameter);
            }
            return(new SqlDataSourceQuery(builder.ToString(), SqlDataSourceCommandType.Text, parameters));
        }
            public static string GetConnectionName(DesignerDataConnection connection)
            {
                DbConnectionStringBuilder connectionStringBuilder = SqlDataSourceDesigner.GetDbProviderFactory(connection.ProviderName).CreateConnectionStringBuilder();

                if (connectionStringBuilder == null)
                {
                    connectionStringBuilder = new DbConnectionStringBuilder();
                }
                string str = null;

                try
                {
                    object obj2;
                    connectionStringBuilder.ConnectionString = connection.ConnectionString;
                    if (IsLocalDbFileConnectionString(connection.ProviderName, connectionStringBuilder))
                    {
                        string filePathKey = GetFilePathKey(connection.ProviderName, connectionStringBuilder);
                        if (!string.IsNullOrEmpty(filePathKey))
                        {
                            string str3 = connectionStringBuilder[filePathKey] as string;
                            if (!string.IsNullOrEmpty(str3))
                            {
                                str = Path.GetFileNameWithoutExtension(str3) + "ConnectionString";
                            }
                        }
                    }
                    if ((str == null) && connectionStringBuilder.TryGetValue("Database", out obj2))
                    {
                        string s = obj2 as string;
                        if (!StringIsEmpty(s))
                        {
                            str = s + "ConnectionString";
                        }
                    }
                }
                catch
                {
                }
                if (str == null)
                {
                    str = "ConnectionString";
                }
                return(str.Trim());
            }
        public SqlDataSourceQuery GetInsertQuery()
        {
            if (!this.CanAutoGenerateQueries())
            {
                return(null);
            }
            List <Parameter> parameters = new List <Parameter>();
            StringBuilder    builder    = new StringBuilder("INSERT INTO ");

            builder.Append(this.GetTableName());
            List <SqlDataSourceColumnData> effectiveColumns = this.GetEffectiveColumns();
            StringBuilder builder2 = new StringBuilder();
            StringBuilder builder3 = new StringBuilder();
            bool          flag     = true;

            foreach (SqlDataSourceColumnData data in effectiveColumns)
            {
                if (!data.Column.Identity)
                {
                    if (!flag)
                    {
                        builder2.Append(", ");
                        builder3.Append(", ");
                    }
                    builder2.Append(data.EscapedName);
                    builder3.Append(data.ParameterPlaceholder);
                    DbProviderFactory dbProviderFactory = SqlDataSourceDesigner.GetDbProviderFactory(this.DesignerDataConnection.ProviderName);
                    parameters.Add(SqlDataSourceDesigner.CreateParameter(dbProviderFactory, data.WebParameterName, data.Column.DataType));
                    flag = false;
                }
            }
            if (flag)
            {
                return(null);
            }
            builder.Append(" (");
            builder.Append(builder2.ToString());
            builder.Append(") VALUES (");
            builder.Append(builder3.ToString());
            builder.Append(")");
            return(new SqlDataSourceQuery(builder.ToString(), SqlDataSourceCommandType.Text, parameters));
        }
        internal static string EscapeObjectName(DesignerDataConnection connection, string objectName)
        {
            string str  = "[";
            string str2 = "]";

            try
            {
                DbProviderFactory dbProviderFactory = SqlDataSourceDesigner.GetDbProviderFactory(connection.ProviderName);
                DbCommandBuilder  builder           = dbProviderFactory.CreateCommandBuilder();
                if (dbProviderFactory == OracleClientFactory.Instance)
                {
                    str = str2 = "\"";
                }
                builder.QuotePrefix = str;
                builder.QuoteSuffix = str2;
                return(builder.QuoteIdentifier(objectName));
            }
            catch (Exception)
            {
                return(str + objectName + str2);
            }
        }
示例#8
0
        private void OnTestQueryButtonClick(object sender, EventArgs e)
        {
            ParameterCollection parameters = new ParameterCollection();

            foreach (Parameter parameter in this._selectQuery.Parameters)
            {
                if (parameter.DbType == DbType.Object)
                {
                    parameters.Add(new Parameter(parameter.Name, parameter.Type, parameter.DefaultValue));
                }
                else
                {
                    parameters.Add(new Parameter(parameter.Name, parameter.DbType, parameter.DefaultValue));
                }
            }
            if (parameters.Count > 0)
            {
                SqlDataSourceParameterValueEditorForm form = new SqlDataSourceParameterValueEditorForm(base.ServiceProvider, parameters);
                if (UIServiceHelper.ShowDialog(base.ServiceProvider, form) == DialogResult.Cancel)
                {
                    return;
                }
            }
            this._resultsGridView.DataSource = null;
            DbCommand command = null;
            Cursor    current = Cursor.Current;

            try
            {
                Cursor.Current = Cursors.WaitCursor;
                DbProviderFactory dbProviderFactory    = SqlDataSourceDesigner.GetDbProviderFactory(this._dataConnection.ProviderName);
                DbConnection      designTimeConnection = null;
                try
                {
                    designTimeConnection = SqlDataSourceDesigner.GetDesignTimeConnection(base.ServiceProvider, this._dataConnection);
                }
                catch (Exception exception)
                {
                    if (designTimeConnection == null)
                    {
                        UIServiceHelper.ShowError(base.ServiceProvider, exception, System.Design.SR.GetString("SqlDataSourceSummaryPanel_CouldNotCreateConnection"));
                        return;
                    }
                }
                if (designTimeConnection == null)
                {
                    UIServiceHelper.ShowError(base.ServiceProvider, System.Design.SR.GetString("SqlDataSourceSummaryPanel_CouldNotCreateConnection"));
                }
                else
                {
                    command = this._sqlDataSourceDesigner.BuildSelectCommand(dbProviderFactory, designTimeConnection, this._selectQuery.Command, parameters, this._selectQuery.CommandType);
                    DbDataAdapter adapter = SqlDataSourceDesigner.CreateDataAdapter(dbProviderFactory, command);
                    adapter.MissingSchemaAction = MissingSchemaAction.AddWithKey;
                    DataSet dataSet = new DataSet();
                    adapter.Fill(dataSet);
                    if (dataSet.Tables.Count == 0)
                    {
                        UIServiceHelper.ShowError(base.ServiceProvider, System.Design.SR.GetString("SqlDataSourceSummaryPanel_CannotExecuteQueryNoTables"));
                    }
                    else
                    {
                        this._resultsGridView.DataSource = dataSet.Tables[0];
                        foreach (DataGridViewColumn column in this._resultsGridView.Columns)
                        {
                            column.SortMode = DataGridViewColumnSortMode.NotSortable;
                        }
                        this._resultsGridView.AutoResizeColumnHeadersHeight();
                        this._resultsGridView.AutoResizeColumns(DataGridViewAutoSizeColumnsMode.AllCells);
                    }
                }
            }
            catch (Exception exception2)
            {
                UIServiceHelper.ShowError(base.ServiceProvider, exception2, System.Design.SR.GetString("SqlDataSourceSummaryPanel_CannotExecuteQuery"));
            }
            finally
            {
                if ((command != null) && (command.Connection.State == ConnectionState.Open))
                {
                    command.Connection.Close();
                }
                Cursor.Current = current;
            }
        }
示例#9
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);
        }