public static void AddLogRecord(string mainInfo, string additionalInfo, LogRecord.LogColor type)
 {
     ExecuteNonQuery(string.Format(
         "insert into LOG values('{0}', '{1}', '{2}', '{3}')",
         DateTimeToSQLiteFormat(DateTime.Now), mainInfo, additionalInfo, (byte)type));
 }
        private static void convertQueryToLogRecord(string query, List<SQLiteParameter> parameters, LogRecord.LogColor type = LogRecord.LogColor.UnKnown)
        {
            StringBuilder additionalInfo = new StringBuilder();
            additionalInfo.Append(query.Replace("'", "\""));

            if(parameters!=null && parameters.Count!=0)
            {
                additionalInfo.Append(" [Параметры: ");
                foreach (SQLiteParameter parameter in parameters)
                {
                    additionalInfo.AppendFormat("{0} = {1}", parameter.ParameterName, parameter.Value);
                }
                additionalInfo.Append("]");
            }

            string mainInfo = "Запрос.";
            query = query.ToUpper();

            if (type == LogRecord.LogColor.UnKnown)
            {
                if (query.Contains("INSERT INTO "))
                {
                    mainInfo = string.Format(
                        "Добавление записи в таблицу {0}",
                        getTableNameFromTypedQuery(query, "INSERT INTO "));
                    type = LogRecord.LogColor.Insert;
                }
                else if (query.Contains("UPDATE "))
                {
                    mainInfo = string.Format(
                        "Обновление записи в таблице {0}",
                        getTableNameFromTypedQuery(query, "UPDATE "));
                    type = LogRecord.LogColor.Update;
                }
            }
            else
            {
                if(type == LogRecord.LogColor.Send)
                {
                    mainInfo = "Отправка обновлений по почте";
                }
            }

            AddLogRecord(mainInfo, additionalInfo.ToString().Replace("\r\n", ""), type);
        }
        public static List<LogRecord> GetLogRecords()
        {
            SQLiteConnection connection = new SQLiteConnection(ConnectionString);
            string command = string.Concat("select * \r\nfrom LOG");
            List<LogRecord> records = new List<LogRecord>();

            try
            {
                connection.Open();
                SQLiteCommand cmd = new SQLiteCommand(command, connection);
                SQLiteDataReader reader = cmd.ExecuteReader();

                while (reader.Read())
                {
                    LogRecord record = new LogRecord
                    {
                        LogDateTime = reader.GetString(reader.GetOrdinal("DateTime")),
                        MainInfo = reader.GetString(reader.GetOrdinal("MainInfo")),
                        AddInfo = reader.GetString(reader.GetOrdinal("Description")),
                        Color = (LogRecord.LogColor)reader.GetByte(reader.GetOrdinal("Type"))
                    };
                    records.Add(record);
                }
            }
            catch (Exception exc)
            {
                MessageWindows.Show("GetLogRecords:Exception", exc.Message);
                return records;
            }
            finally
            {
                if (connection.State == ConnectionState.Open)
                {
                    connection.Close();
                }
            }
            return records;
        }