Ejemplo n.º 1
0
        // Сохранение данных из БД в xml-файл
        private void btnSaveInXml_Click(object sender, EventArgs e)
        {
            string fileName = "";
            // Работа с БД
            linqClass        linq      = new linqClass();
            List <OwnerData> owners    = null;
            XmlSerializer    formatter = null;


            // Выбор файла для сохранения данных
            SaveFileDialog fileSave = new SaveFileDialog();

            fileSave.Filter = "XML-File | *.xml";
            DialogResult result = fileSave.ShowDialog();

            // Если нажата кнопка OK
            if (result == DialogResult.OK)
            {
                try
                {
                    // Получаю путь к выбранному файлу
                    fileName = fileSave.FileName;

                    // Получаю данные из БД
                    owners = linq.getData();

                    if (owners != null)
                    {
                        formatter = new XmlSerializer(typeof(List <OwnerData>), new XmlRootAttribute("OwnersData"));

                        // Открываю файл для записи
                        using (FileStream fs = new FileStream(fileName, FileMode.Create))
                        {
                            // Записываю данные в файл
                            formatter.Serialize(fs, owners);
                            MessageBox.Show("Данные из БД успешно сохранены в файл " + fileName + " !", "Успех!", MessageBoxButtons.OK);
                        }
                    }
                    else
                    {
                        MessageBox.Show("Что-то пошло не так... Данные не были сохранены в файл!", "Ошибка!", MessageBoxButtons.OK);
                    }
                }
                catch
                {
                    MessageBox.Show("Данные из БД не сохранены в файл!", "Ошибка!", MessageBoxButtons.OK);
                }
            }
        }
Ejemplo n.º 2
0
        // Сохранение данных из xml-файла в БД
        // !!! В БД будут сохранены данные из файлов, соответствующих формату.
        // !!! Данные из файлов, не соответствующих формату, сохранены в БД не будут
        private void btnSelectFolder_Click(object sender, EventArgs e)
        {
            // Путь к папке  программой
            string pathToExe = System.IO.Path.GetDirectoryName(Process.GetCurrentProcess().MainModule.FileName);

            string[] xmlFiles = { };
            // Работа с БД
            linqClass        linq       = new linqClass();
            XmlSerializer    formatter  = null;
            List <OwnerData> owners     = null;
            bool             resultSave = false;


            // Выбор папки с xml-файлами
            FolderBrowserDialog folderBrowser = new FolderBrowserDialog();

            folderBrowser.ShowNewFolderButton = false;
            // Начальная папка для поиска - папка с программой
            folderBrowser.SelectedPath = pathToExe;
            DialogResult result = folderBrowser.ShowDialog();

            // Если нажата кнопка OK
            if (result == DialogResult.OK)
            {
                // Если папка выбрана
                if (!string.IsNullOrWhiteSpace(folderBrowser.SelectedPath))
                {
                    // Получаю список xml-файлов
                    xmlFiles  = Directory.GetFiles(folderBrowser.SelectedPath, "*.xml");
                    formatter = new XmlSerializer(typeof(List <OwnerData>), new XmlRootAttribute("OwnersData"));

                    // Если в выбранной папке есть xml-файлы
                    if (xmlFiles.Length > 0)
                    {
                        // Обрабатываю каждый файл
                        foreach (string path in xmlFiles)
                        {
                            try
                            {
                                // Открываю файл для чтения
                                using (FileStream fs = new FileStream(path, FileMode.Open))
                                {
                                    // Получаю данные в файле в список
                                    owners = (List <OwnerData>)formatter.Deserialize(fs);
                                    // Перебираю полученные данные
                                    for (int cntOwn = 0; cntOwn < owners.Count();)
                                    {
                                        // У каждого OwnerData перебираю список CalcsData
                                        for (int cntCalc = 0; cntCalc < owners[cntOwn].CalcsData.Count();)
                                        {
                                            // Если (Param1 + Param2) не равен CheckSum, то удаляю эти данные из списка
                                            // Если равны, то перехожу к следующему элементу
                                            if ((owners[cntOwn].CalcsData[cntCalc].Param1 + owners[cntOwn].CalcsData[cntCalc].Param2) != owners[cntOwn].CalcsData[cntCalc].CheckSum)
                                            {
                                                owners[cntOwn].CalcsData.RemoveAt(cntCalc);
                                            }
                                            else
                                            {
                                                cntCalc++;
                                            }
                                        }

                                        // Если у OwnerData список CalcsData пустой, то удаляю этот OwnerData
                                        // Если CalcsData не пустой, то перехожу к следующему элементу
                                        if (owners[cntOwn].CalcsData.Count == 0)
                                        {
                                            owners.RemoveAt(cntOwn);
                                        }
                                        else
                                        {
                                            cntOwn++;
                                        }
                                    }

                                    // В списке owners останутся только те данные, у которых есть CalcsData с валидными данными
                                    // Сохраняю валидные данные из xml-файла в БД
                                    resultSave = linq.addNewData(owners);
                                    if (!resultSave)
                                    {
                                        break;
                                    }
                                }
                            }
                            catch
                            {
                                MessageBox.Show("Файл " + path + " имеет неправильный формат данных!", "Ошибка!", MessageBoxButtons.OK);
                            }
                        }

                        if (resultSave)
                        {
                            MessageBox.Show("Данные из xml-файлов успешно сохранены в БД!", "Успех!", MessageBoxButtons.OK);
                        }
                        else
                        {
                            MessageBox.Show("Что-то пошло не так... Данные не были сохранены в БД!", "Ошибка!", MessageBoxButtons.OK);
                        }
                    }
                    else
                    {
                        MessageBox.Show("В выбранной папке нет xml-файлов!", "Ошибка!", MessageBoxButtons.OK);
                    }
                }
            }
        }