private static List <FavoriteEntry> GetBookMarksFromDBPath(string dbPath)
        {
            var       favorites  = new List <FavoriteEntry>();
            DataTable favoriteDt = null;

            try {
                var getBookmarksCommand = new SQLiteCommand(
                    @"select bookmarks.title,places.url,bookmarks.dateAdded from 
                        moz_bookmarks as bookmarks, 
                        moz_places as places on bookmarks.fk = places.id;");

                favoriteDt = SqliteUtils.QueryDataTable(dbPath, getBookmarksCommand);

                for (int i = 0; i < favoriteDt.Rows.Count; i++)
                {
                    var row = favoriteDt.Rows[i];

                    var title = row["title"].ToString();
                    var time  = DateUtils.GetTimeFromNewCentery((long)row["dateAdded"] / TimeToSecondDevideCount);
                    var uri   = new Uri(row["url"].ToString());

                    var favorite = new FavoriteEntry(uri, title, time);
                    favorites.Add(favorite);
                }
            }
            catch (Exception ex) {
                Logger.WriteLine(ex.Message);
                return(favorites);
            }
            finally {
                favoriteDt?.Dispose();
            }

            return(favorites);
        }
        public ICollection <HistoryEntry> GetBrowserHistories(DateTime?startTime, DateTime?endTime)
        {
            List <HistoryEntry> entryList = new List <HistoryEntry>();

            string query = string.Format("SELECT url, title, visit_count, datetime(visit_date/1000000,'unixepoch') AS last_visit " +
                                         "FROM {0}, {1} " +
                                         "WHERE {0}.id = {1}.place_id", TABLE_NAME, VISITS_TABLE_NAME);

            foreach (string dbPath in _firefoxDatabasePaths)
            {
                DataTable historyDt = SqliteUtils.QueryDataTable(dbPath, new SQLiteCommand(query));

                foreach (DataRow row in historyDt.Rows)
                {
                    Uri      uri;
                    DateTime lastVisit;
                    string   title;
                    int?     visitCount;

                    lastVisit = DateTime.Parse(row["last_visit"].ToString()).ToLocalTime();
                    if (!DateUtils.IsEntryInTimelimit(lastVisit, startTime, endTime))
                    {
                        continue;
                    }

                    try
                    {
                        uri = new Uri(row["url"].ToString(), UriKind.Absolute);
                    }
                    catch (UriFormatException)
                    {
                        continue;
                    }

                    title = row["title"].ToString();
                    title = string.IsNullOrEmpty(title)
                        ? null
                        : title;

                    visitCount = int.TryParse(row["visit_count"].ToString(), out int outVal)
                        ? (int?)outVal
                        : null;

                    HistoryEntry entry = new HistoryEntry(uri, title, lastVisit, visitCount, Browser.Firefox);
                    entryList.Add(entry);
                }
            }

            return(entryList);
        }