/// <summary>The load table data.</summary>
        private void LoadTableData()
        {
            if (_services.Settings.ConnectionDefinition==null)
            {
                _services.HostWindow.DisplaySimpleMessageBox(this, "Please select a connection.", "Select a Connection");
                return;
            }

            GetTablesAndViews();

            DbDataAdapter adapter = null;
            DbCommand cmd = null;
            DataTable dt = null;
            Query query = new Query("SELECT * FROM " + Utility.MakeSqlFriendly(TableName));

            if (string.IsNullOrEmpty(TableName))
            {
                Text = Resources.Table_none;
                return;
            }

            try
            {
                IsBusy = true;
                UseWaitCursor = true;
                dataGridViewResult.DataSource = null;
                Application.DoEvents();

                if (_dbConnection == null)
                {
                    _dbConnection = _services.Settings.GetOpenConnection();
                }

                query.Result = new DataSet(TableName + " View");
                _batch.Clear();
                _batch.Add(query);

                adapter = _services.Settings.ProviderFactory.CreateDataAdapter();
                cmd = _dbConnection.CreateCommand();
                cmd.CommandText = query.Sql;
                cmd.CommandType = CommandType.Text;
                SetCommandTimeout(cmd, _settings.CommandTimeout);
                adapter.SelectCommand = cmd;
                adapter.Fill(query.Result);
                SetStatus(string.Format("Loaded table '{0}'", TableName));
                Text = TableName;
            }
            catch (DbException dbExp)
            {
                // todo: improve!
                _services.HostWindow.DisplaySimpleMessageBox(this, dbExp.Message, "View Table Error");
                SetStatus(dbExp.Message);
                Text = Resources.ViewDataError;
            }
            finally
            {
                if (adapter != null)
                {
                    adapter.Dispose();
                }

                if (cmd != null)
                {
                    cmd.Dispose();
                }

                UseWaitCursor = false;
                IsBusy = false;
            }

            if (query.Result != null && query.Result.Tables.Count > 0)
            {
                dt = query.Result.Tables[0];
                Text = Resources.Table_colon + TableName;
            }

            dataGridViewResult.DefaultCellStyle.NullValue = _settings.NullText;
            dataGridViewResult.DataSource = dt;
            dataGridViewResult.AutoResizeColumns(DataGridViewAutoSizeColumnsMode.DisplayedCells);

            if (dt != null)
            {
                SetRowCount(dt.Rows.Count);
            }
        }
 /// <summary>
 /// 	Adds a query to this batch.
 /// </summary>
 /// <param name = "query">The query.</param>
 public void Add(Query query)
 {
     Queries.Add(query);
 }
 /// <summary>
 /// 	Initializes a new instance of the <see cref = "BatchProgressEventArgs" /> class.
 /// </summary>
 /// <param name = "query">The query.</param>
 /// <param name = "count">The count.</param>
 /// <param name = "index">The index.</param>
 public BatchProgressEventArgs(Query query, int count, int index)
 {
     Query = query;
     Count = count;
     Index = index;
 }
        /// <summary>The get.</summary>
        /// <param name="viewOrTableName">The view or table name.</param>
        /// <returns></returns>
        public DataTable Get(string viewOrTableName)
        {
            DbDataAdapter adapter = null;
            DbCommand cmd = null;
            DataTable dt = null;
            QueryBatch batch = new QueryBatch();
            Query query = new Query("SELECT * FROM " + Utility.MakeSqlFriendly(viewOrTableName));

            if (string.IsNullOrEmpty(viewOrTableName))
            {
                return null;
            }

            if (_dataTables.ContainsKey(viewOrTableName))
            {
                return _dataTables[viewOrTableName];
            }

            try
            {
                if (_dbConnection == null || _dbConnection.State != ConnectionState.Open)
                {
                    _dbConnection = Services.Settings.GetOpenConnection();
                }

                query.Result = new DataSet(viewOrTableName + " View");
                batch.Clear();
                batch.Add(query);

                adapter = Services.Settings.ProviderFactory.CreateDataAdapter();
                cmd = _dbConnection.CreateCommand();
                cmd.CommandText = query.Sql;
                cmd.CommandType = CommandType.Text;
                adapter.SelectCommand = cmd;
                adapter.Fill(query.Result);
            }

            // catch (Exception exp)
                // {
                // throw;
                // }
            finally
            {
                if (adapter != null)
                {
                    adapter.Dispose();
                }

                if (cmd != null)
                {
                    cmd.Dispose();
                }
            }

            if (query.Result.Tables.Count > 0)
            {
                dt = query.Result.Tables[0];
                _dataTables[viewOrTableName] = dt;
            }

            return dt;
        }