Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.04.2011, 17:01   #1
tresh
Пользователь
 
Аватар для tresh
 
Регистрация: 06.07.2008
Сообщений: 30
По умолчанию SQlite в dataGridView

Есть код. Он должен считывать историю из firefox. Все хорошо, но я не знаю, как вывести эту информацию в dataDridView. Помогите.
Код:
 
public class URL
        {
            string url;
            string title;
            string browser;
            public URL(string url, string title, string browser)
            {
                this.url = url;
                this.title = title;
                this.browser = browser;
public class Firefox
{
        public List<URL> URLs { get; set; }
        public IEnumerable<URL> GetHistory()
        {
            // Get Current Users App Data
            string documentsFolder = Environment.GetFolderPath
                              (Environment.SpecialFolder.ApplicationData);

            // Move to Firefox Data
            documentsFolder += "\\Mozilla\\Firefox\\Profiles\\";

            // Check if directory exists
            if (Directory.Exists(documentsFolder))
            {
                 // Loop each Firefox Profile
                 foreach (string folder in Directory.GetDirectories
                                                     (documentsFolder))
                 {
                       // Fetch Profile History
                       return ExtractUserHistory(folder);
                 }
            }
            return null;
        }

        IEnumerable<URL> ExtractUserHistory(string folder)
        {
            // Get User history info
            DataTable historyDT = ExtractFromTable("moz_places", folder);

            // Get visit Time/Data info
            DataTable visitsDT = ExtractFromTable("moz_historyvisits",
                                                   folder);

            // Loop each history entry
            foreach (DataRow row in historyDT.Rows)
            {
                  // Select entry Date from visits
                  var entryDate = (from dates in visitsDT.AsEnumerable()
                                   where dates["place_id"].ToString() == row["id"].ToString()
                                   select dates).LastOrDefault();
                  // If history entry has date
                  if (entryDate != null)
                  {
                         // Obtain URL and Title strings
                         string url = row["Url"].ToString();
                         string title = row["title"].ToString();
        
                         // Create new Entry
                         URL u = new URL(url.Replace('\'', ' '),
                                         title.Replace('\'', ' '),
                                         "Mozilla Firefox");

                         // Add entry to list
                         URLs.Add(u);
                  }
            }
            // Clear URL History
            DeleteFromTable("moz_places", folder);
            DeleteFromTable("moz_historyvisits", folder);

            return URLs;
        }
 
        void DeleteFromTable(string table, string folder)
        {
            SQLiteConnection sql_con;
            SQLiteCommand sql_cmd;

            // FireFox database file
            string dbPath = folder + "\\places.sqlite";

            // If file exists
            if (File.Exists(dbPath))
            {
                // Data connection
                sql_con = new SQLiteConnection("Data Source=" + dbPath +
                                    ";Version=3;New=False;Compress=True;");

                // Open the Conn
                sql_con.Open();

                // Delete Query
                string CommandText = "delete from " + table;

                // Create command
                sql_cmd = new SQLiteCommand(CommandText, sql_con);

                sql_cmd.ExecuteNonQuery();

                // Clean up
                sql_con.Close();
            }
        }

        DataTable ExtractFromTable(string table, string folder)
        {
            SQLiteConnection sql_con;
            SQLiteCommand sql_cmd;
            SQLiteDataAdapter DB;
            DataTable DT = new DataTable();

            // FireFox database file
            string dbPath = folder + "\\places.sqlite";

            // If file exists
            if (File.Exists(dbPath))
            {
                // Data connection
                sql_con = new SQLiteConnection("Data Source=" + dbPath +
                                    ";Version=3;New=False;Compress=True;");

                // Open the Connection
                sql_con.Open();
                sql_cmd = sql_con.CreateCommand();

                // Select Query
                string CommandText = "select * from " + table;

                // Populate Data Table
                DB = new SQLiteDataAdapter(CommandText, sql_con);
                DB.Fill(DT);

                // Clean up
                sql_con.Close();
            }
            return DT;
        }
    }
tresh вне форума Ответить с цитированием
Старый 25.04.2011, 19:43   #2
Daramant
Форумчанин
 
Регистрация: 06.01.2009
Сообщений: 340
По умолчанию

Объяви публичные свойства (они будут отображаться в DataGridView)
Код:
    public class URL
    {
        public string url { get; set; }
        public string title { get; set; }
        public string browser { get; set; }

        public URL(string url, string title, string browser)
        {
            this.url = url;
            this.title = title;
            this.browser = browser;
        }
    }
и сделай так:
Код:
    Firefox f = new Firefox();
    dataGridView1.DataSource = f.GetHistory();
Истинный успех – это то, что Вы сделали в сравнении с тем, что могли бы сделать.
Никогда не бойся делать то, что ты не умеешь. Помни, ковчег был построен любителем. Профессионалы построили "Титаник".
Daramant вне форума Ответить с цитированием
Старый 25.04.2011, 19:56   #3
tresh
Пользователь
 
Аватар для tresh
 
Регистрация: 06.07.2008
Сообщений: 30
По умолчанию

1. Выдает ошибку в строке
Код:
var entryDate* = (from dates in visitsDT.AsEnumerable()
слова entryDate* и sEnumerable() оно не распознает.
2. Когда нажимаю на кнопку - в строке URLs.Add(u); - выдает ошибку!
tresh вне форума Ответить с цитированием
Старый 25.04.2011, 20:13   #4
Daramant
Форумчанин
 
Регистрация: 06.01.2009
Сообщений: 340
По умолчанию

Я не проверял работоспособность данных методов.
Цитата:
Выдает ошибку в строке
Имя переменной entryDate без звездочки в конце конечно).
Цитата:
2. Когда нажимаю на кнопку - в строке URLs.Add(u); - выдает ошибку!
Какую ошибку?
Истинный успех – это то, что Вы сделали в сравнении с тем, что могли бы сделать.
Никогда не бойся делать то, что ты не умеешь. Помни, ковчег был построен любителем. Профессионалы построили "Титаник".
Daramant вне форума Ответить с цитированием
Старый 25.04.2011, 20:42   #5
Daramant
Форумчанин
 
Регистрация: 06.01.2009
Сообщений: 340
По умолчанию

Цитата:
2. Когда нажимаю на кнопку - в строке URLs.Add(u); - выдает ошибку!
В описании исключения написано же, что не создан объект.
Добавь конструктор:
Код:
        public Firefox()
        {
            URLs = new List<URL>();
        }
Истинный успех – это то, что Вы сделали в сравнении с тем, что могли бы сделать.
Никогда не бойся делать то, что ты не умеешь. Помни, ковчег был построен любителем. Профессионалы построили "Титаник".
Daramant вне форума Ответить с цитированием
Старый 25.04.2011, 21:26   #6
tresh
Пользователь
 
Аватар для tresh
 
Регистрация: 06.07.2008
Сообщений: 30
По умолчанию

Скиньте пожалуйста уже весь рабочий код, ато я добавил то что выше и вылетело еще куча ошибок.

Последний раз редактировалось tresh; 25.04.2011 в 21:32.
tresh вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Delphi XE + SQLite 3.7.5 + шифрование KiL0z БД в Delphi 2 27.04.2011 18:34
SQlite override значеий Dayman SQL, базы данных 0 29.01.2011 00:05
SQLite Dr.Badnezz БД в Delphi 2 24.03.2010 09:46
SQLite 3 XeN0N PHP 4 19.01.2009 19:06
SQLite 3 XeN0N PHP 1 18.01.2009 20:30