private bool LoadTableQueryState(Hashtable tableQueryState)
 {
     SqlDataSource component = this._sqlDataSourceDesigner.Component as SqlDataSource;
     int num = (int) tableQueryState["Conn_ConnectionStringHash"];
     string str = (string) tableQueryState["Conn_ProviderName"];
     if ((num != this._dataConnection.ConnectionString.GetHashCode()) || (str != this._dataConnection.ProviderName))
     {
         return false;
     }
     int num2 = (int) tableQueryState["Generate_Mode"];
     string str2 = (string) tableQueryState["Table_Name"];
     TableItem item = null;
     foreach (TableItem item2 in this._tablesComboBox.Items)
     {
         if (item2.DesignerDataTable.Name == str2)
         {
             item = item2;
             break;
         }
     }
     if (item == null)
     {
         return false;
     }
     DesignerDataTableBase designerDataTable = item.DesignerDataTable;
     int num3 = (int) tableQueryState["Fields_Count"];
     ArrayList list = new ArrayList();
     for (int i = 0; i < num3; i++)
     {
         string columnName = (string) tableQueryState["Fields_FieldName" + i.ToString(CultureInfo.InvariantCulture)];
         DesignerDataColumn columnFromTable = this.GetColumnFromTable(designerDataTable, columnName);
         if (columnFromTable == null)
         {
             return false;
         }
         list.Add(columnFromTable);
     }
     bool flag = (bool) tableQueryState["AsteriskField"];
     bool flag2 = (bool) tableQueryState["Distinct"];
     List<Parameter> list2 = new List<Parameter>();
     foreach (ICloneable cloneable in component.SelectParameters)
     {
         list2.Add((Parameter) cloneable.Clone());
     }
     bool flag3 = SqlDataSourceDesigner.SupportsNamedParameters(SqlDataSourceDesigner.GetDbProviderFactory(this._dataConnection.ProviderName));
     int num5 = (int) tableQueryState["Filters_Count"];
     ArrayList list3 = new ArrayList();
     for (int j = 0; j < num5; j++)
     {
         string str4 = (string) tableQueryState["Filters_FieldName" + j.ToString(CultureInfo.InvariantCulture)];
         string operatorFormat = (string) tableQueryState["Filters_OperatorFormat" + j.ToString(CultureInfo.InvariantCulture)];
         bool isBinary = (bool) tableQueryState["Filters_IsBinary" + j.ToString(CultureInfo.InvariantCulture)];
         string str6 = (string) tableQueryState["Filters_Value" + j.ToString(CultureInfo.InvariantCulture)];
         string name = (string) tableQueryState["Filters_ParameterName" + j.ToString(CultureInfo.InvariantCulture)];
         DesignerDataColumn designerDataColumn = this.GetColumnFromTable(designerDataTable, str4);
         if (designerDataColumn == null)
         {
             return false;
         }
         Parameter parameter = null;
         if (name != null)
         {
             if (flag3)
             {
                 foreach (Parameter parameter2 in list2)
                 {
                     if (parameter2.Name == name)
                     {
                         parameter = parameter2;
                         break;
                     }
                 }
                 if (parameter != null)
                 {
                     list2.Remove(parameter);
                 }
                 else
                 {
                     parameter = new Parameter(name);
                 }
             }
             else if (list2.Count > 0)
             {
                 parameter = list2[0];
                 list2.RemoveAt(0);
             }
             else
             {
                 parameter = new Parameter(name);
             }
         }
         list3.Add(new SqlDataSourceFilterClause(this._dataConnection, designerDataTable, designerDataColumn, operatorFormat, isBinary, str6, parameter));
     }
     int num7 = (int) tableQueryState["Orders_Count"];
     ArrayList list4 = new ArrayList();
     for (int k = 0; k < num7; k++)
     {
         string str8 = (string) tableQueryState["Orders_FieldName" + k.ToString(CultureInfo.InvariantCulture)];
         bool isDescending = (bool) tableQueryState["Orders_IsDescending" + k.ToString(CultureInfo.InvariantCulture)];
         DesignerDataColumn column3 = this.GetColumnFromTable(designerDataTable, str8);
         if (column3 == null)
         {
             return false;
         }
         list4.Add(new SqlDataSourceOrderClause(this._dataConnection, designerDataTable, column3, isDescending));
     }
     SqlDataSourceTableQuery query = new SqlDataSourceTableQuery(this._dataConnection, designerDataTable);
     foreach (DesignerDataColumn column4 in list)
     {
         query.Fields.Add(column4);
     }
     query.AsteriskField = flag;
     query.Distinct = flag2;
     foreach (SqlDataSourceFilterClause clause in list3)
     {
         query.FilterClauses.Add(clause);
     }
     foreach (SqlDataSourceOrderClause clause2 in list4)
     {
         query.OrderClauses.Add(clause2);
     }
     bool includeOldValues = num2 == 2;
     string oldValuesFormatString = GetOldValuesFormatString(component, false);
     SqlDataSourceQuery selectQuery = query.GetSelectQuery();
     SqlDataSourceQuery insertQuery = query.GetInsertQuery();
     SqlDataSourceQuery updateQuery = query.GetUpdateQuery(oldValuesFormatString, includeOldValues);
     SqlDataSourceQuery deleteQuery = query.GetDeleteQuery(oldValuesFormatString, includeOldValues);
     if ((selectQuery != null) && (component.SelectCommand != selectQuery.Command))
     {
         return false;
     }
     if (((insertQuery != null) && (component.InsertCommand.Trim().Length > 0)) && (component.InsertCommand != insertQuery.Command))
     {
         return false;
     }
     if (((updateQuery != null) && (component.UpdateCommand.Trim().Length > 0)) && (component.UpdateCommand != updateQuery.Command))
     {
         return false;
     }
     if (((deleteQuery != null) && (component.DeleteCommand.Trim().Length > 0)) && (component.DeleteCommand != deleteQuery.Command))
     {
         return false;
     }
     this._tableQuery = new SqlDataSourceTableQuery(this._dataConnection, designerDataTable);
     this._tablesComboBox.SelectedItem = item;
     ArrayList list5 = new ArrayList();
     foreach (DesignerDataColumn column5 in list)
     {
         foreach (ColumnItem item3 in this._fieldsCheckedListBox.Items)
         {
             if (item3.DesignerDataColumn == column5)
             {
                 list5.Add(this._fieldsCheckedListBox.Items.IndexOf(item3));
             }
         }
     }
     foreach (int num9 in list5)
     {
         this._fieldsCheckedListBox.SetItemChecked(num9, true);
     }
     if (flag)
     {
         this._fieldsCheckedListBox.SetItemChecked(0, true);
     }
     this._selectDistinctCheckBox.Checked = flag2;
     this._generateMode = num2;
     foreach (SqlDataSourceFilterClause clause3 in list3)
     {
         this._tableQuery.FilterClauses.Add(clause3);
     }
     foreach (SqlDataSourceOrderClause clause4 in list4)
     {
         this._tableQuery.OrderClauses.Add(clause4);
     }
     return true;
 }
 private bool LoadParsedSqlState()
 {
     SqlDataSource component = (SqlDataSource) this._sqlDataSourceDesigner.Component;
     string[] strArray = SqlDataSourceCommandParser.ParseSqlString(this._sqlDataSourceDesigner.SelectCommand);
     if (strArray == null)
     {
         return false;
     }
     bool flag = false;
     string lastIdentifierPart = SqlDataSourceCommandParser.GetLastIdentifierPart(strArray[strArray.Length - 1]);
     if (lastIdentifierPart == null)
     {
         return false;
     }
     List<string> list = new List<string>();
     for (int i = 0; i < (strArray.Length - 1); i++)
     {
         string str2 = SqlDataSourceCommandParser.GetLastIdentifierPart(strArray[i]);
         if (str2 == null)
         {
             return false;
         }
         if (str2 == "*")
         {
             flag = true;
         }
         else
         {
             if (str2.Length == 0)
             {
                 return false;
             }
             list.Add(str2);
         }
     }
     if (flag && (list.Count != 0))
     {
         return false;
     }
     TableItem item = null;
     foreach (TableItem item2 in this._tablesComboBox.Items)
     {
         if (item2.DesignerDataTable.Name == lastIdentifierPart)
         {
             item = item2;
             break;
         }
     }
     if (item == null)
     {
         return false;
     }
     DesignerDataTableBase designerDataTable = item.DesignerDataTable;
     List<DesignerDataColumn> list2 = new List<DesignerDataColumn>();
     foreach (string str3 in list)
     {
         DesignerDataColumn columnFromTable = this.GetColumnFromTable(designerDataTable, str3);
         if (columnFromTable == null)
         {
             return false;
         }
         list2.Add(columnFromTable);
     }
     bool flag2 = ((component.DeleteCommand.Trim().Length > 0) || (component.InsertCommand.Trim().Length > 0)) || (component.UpdateCommand.Trim().Length > 0);
     if (flag2)
     {
         SqlDataSourceTableQuery query = new SqlDataSourceTableQuery(this._dataConnection, designerDataTable);
         foreach (DesignerDataColumn column2 in list2)
         {
             query.Fields.Add(column2);
         }
         query.AsteriskField = flag;
         SqlDataSourceQuery insertQuery = query.GetInsertQuery();
         string oldValuesFormatString = GetOldValuesFormatString(component, false);
         SqlDataSourceQuery updateQuery = query.GetUpdateQuery(oldValuesFormatString, false);
         SqlDataSourceQuery deleteQuery = query.GetDeleteQuery(oldValuesFormatString, false);
         if (((insertQuery != null) && (component.InsertCommand.Trim().Length > 0)) && (component.InsertCommand != insertQuery.Command))
         {
             return false;
         }
         if (((updateQuery != null) && (component.UpdateCommand.Trim().Length > 0)) && (component.UpdateCommand != updateQuery.Command))
         {
             return false;
         }
         if (((deleteQuery != null) && (component.DeleteCommand.Trim().Length > 0)) && (component.DeleteCommand != deleteQuery.Command))
         {
             return false;
         }
     }
     this._tableQuery = new SqlDataSourceTableQuery(this._dataConnection, designerDataTable);
     this._tablesComboBox.SelectedItem = item;
     ArrayList list3 = new ArrayList();
     foreach (DesignerDataColumn column3 in list2)
     {
         foreach (ColumnItem item3 in this._fieldsCheckedListBox.Items)
         {
             if (item3.DesignerDataColumn == column3)
             {
                 list3.Add(this._fieldsCheckedListBox.Items.IndexOf(item3));
             }
         }
     }
     foreach (int num2 in list3)
     {
         this._fieldsCheckedListBox.SetItemChecked(num2, true);
     }
     if (flag)
     {
         this._fieldsCheckedListBox.SetItemChecked(0, true);
     }
     this._generateMode = flag2 ? 1 : 0;
     return true;
 }