public ActionResult GetTextCache()
        {
            DatabaseWorker dw = new DatabaseWorker();
            DatabaseWorker.connectDB();
            ViewBag.Tables = new ArrayList();
            ViewBag.Images = new ArrayList();
            String[] tableNames = { "Technology", "Music", "Nature", "Health", "Sports", "Business" };
            for (int j = 0; j < tableNames.Length; j++)
            {
                AsyncWorker aw = new AsyncWorker();
                DataTable table;
                object t = HttpRuntime.Cache.Get(tableNames[j]);
                if (t == null)
                {
                    table = aw.LoadDBTextAsync("select DocumentTitle as Title, Username, FirstName, LastName from Articles, Groups, SiteUsers " +
                    "where Articles.GroupID=Groups.GroupID and SiteUsers.UserID=Articles.UserID and GroupName = '"+tableNames[j]+"'" +
                    " order by FirstName, LastName ASC");
                    table.TableName = tableNames[j] + " Articles:";
                    HttpRuntime.Cache.Insert(tableNames[j], table, null, System.Web.Caching.Cache.NoAbsoluteExpiration, new TimeSpan(0, 1, 0));
                }
                else
                {
                    table = (DataTable)t;
                }
                ViewBag.Tables.Add(table);

            }
            DatabaseWorker.disconnectDB();
            ViewBag.Title = "Caching Test Loading Text From Database";
            return View("RegularQueries");
        }
        /// <summary>
        /// Loads images from database synchronously.
        /// </summary>
        /// <returns>View of textual tables</returns>
        public ActionResult GetTextSynchronous()
        {
            DatabaseWorker dw = new DatabaseWorker();
            DatabaseWorker.connectDB();
            ViewBag.Tables = new ArrayList();
            ViewBag.Images = new ArrayList();
            String[] tableNames = { "Technology", "Music", "Nature", "Health", "Sports", "Business" };
            for (int j = 0; j < tableNames.Length; j++)
            {
                AsyncWorker aw = new AsyncWorker();
                DataTable table = aw.LoadDBTextAsync("select DocumentTitle as Title, Username, FirstName, LastName " +
                    "from Articles, Groups, SiteUsers where Articles.GroupID=Groups.GroupID and SiteUsers.UserID=Articles.UserID "
                    + "and GroupName = '" + tableNames[j] + "' order by FirstName, LastName ASC");
                table.TableName = tableNames[j] + " Articles:";
                ViewBag.Tables.Add(table);

            }
            DatabaseWorker.disconnectDB();
            ViewBag.Title = "Synchronous Test Loading Text From Database";
            return View("RegularQueries");
        }
        /// <summary>
        /// Loads images from database using asynchronous method calling.
        /// </summary>
        public void GetTextAsync()
        {
            AsyncManager.Timeout = 10000;

            ViewBag.Images = new ArrayList();
            DatabaseWorker.connectDB();
            DatabaseWorker dw = new DatabaseWorker();
            ViewBag.Tables = new ArrayList();
            String[] tableNames = { "Technology", "Music", "Nature", "Health", "Sports", "Business" };
            for (int j = 0; j < tableNames.Length; j++)
            {
                AsyncManager.OutstandingOperations.Increment();
                AsyncWorker l = new AsyncWorker();
                l.LoadDataCompleted += (sender, e) =>
                {
                    e.Data.TableName = tableNames[j] +" Articles:";
                    ViewBag.Tables.Add(e.Data);
                    AsyncManager.OutstandingOperations.Decrement();
                };

                l.LoadDBTextAsync("select DocumentTitle as Title, Username, FirstName, LastName from Articles, Groups, SiteUsers " +
                    "where Articles.GroupID=Groups.GroupID and SiteUsers.UserID=Articles.UserID and GroupName = '"+tableNames[j]+"'" +
                    " order by FirstName, LastName ASC");
            }
            DatabaseWorker.disconnectDB();
        }