Главная · Карта сайта · Поиск · Статьи · Компьютерные курсы · Обучающие программы · Открытые проекты · Веб-программирование · Создание интернет-сайта · Полезные ссылки · Глоссарий · Контакты · Декабрь 09 2016 22:14:47
Последнее опубликованное

Что такое Model-View-Controller
Pattern Model-View-Controller

Как создать свой веб-сайт
Как создать свой сайт в интернете

Разное
Статистика

Основы программирования. Работа с текстовыми файлами


Содержание курса

А так выглядели результаты первых запросов к первым базам данных...

Шаг 9. База данных, текстовые файлы. (Операции с текстом. Часть 3.)

На этом шаге рассмотрим усовершенствованный вариант работы с базой данных, а именно: чтение строки соединения и SQL запроса будет осуществляться из текстового файла. Результат выполнения запроса также попадет в текстовый файл. Ну и объектом изучения, как это ни странно, будет не работа с базой данных, а работа с текстовыми файлами, поскольку манипуляции с базой данных, в сравнении с предыдущим шагом, не претерпели серьезных изменений.

Описание задачи

Необходимо выполнить SQL запрос и сохранить результат его выполнения в текстовом файле. Строка соединения с базой данных и сам запрос сохранены в текстовом файле config.txt, расположенном там же, где и сама программа. В первой строчке текстового файла находится строка соединения, а во всех остальных - сам запрос на SQL. В качестве запроса я взял SQL из шага 20 компьютерного курса SQL 25™. Если в текстовом файле отсутствует строка соединения или SQL запрос, то программа завершает свою работу, сообщая пользователю об этой неприятности. Файл, куда будет записываться результат запроса, будет сохранен "рядом" с файлом config.txt, под именем result.txt.

Описание реализации

Для работы с файлами будем использовать файловые потоки, с которыми необходимо работать, как с разделяемыми системными ресурсами - с использованием конструкции using, которая более или менее подробно уже была рассмотрена на предыдущем шаге. Поскольку файла config.txt может не оказаться на месте, или файл result.txt по какой-то причине невозможно будет создать, в программе нужно использовать средства обработки исключительных ситуаций - конструкцию try-catch-finally, о которой также уже неоднократно упоминалось. И еще один момент: для того чтобы сформировать очередную строку для записи в файл, в ходе формирования результата запроса я использую специальный класс StringBuilder. Если вы уже изучали вопрос работы со строками на C# или VB.NET или еще на каком языке программирования платформы Microsoft .NET Framework, то возможно, слышали такое мнение, что работать со строками в этих языках обязательно нужно с использованием StringBuilder. Дело в том, что экземпляры строк в CLR являются объектами неизменяемыми после первой их инициализации. Это означает, что каждый раз, когда вы модифицируете строку с помощью оператора конкатенации “+”, в памяти формируется новый объект - строка, и ваша переменная меняет указатель на него, а старый экземпляр строки ждет своего часа быть удаленным сборщиком мусора. Класс StringBuilder позволяет как-то экономить расход памяти и время на ее выделение, поэтому его рекомендуют использовать вместо оператора “+”. Но следует учитывать один момент. Когда компилятор “видит” все объединяемые фрагменты строки, то он может сгенерировать оптимальный код для конкретного случая, который будет работать более эффективно, нежели код с использованием StringBuilder. “Видит” все объединяемые фрагменты, это означает, что строка формируется не в каком-нибудь цикле, а за одну операцию, состоящую из нескольких объединений, например: Console.WriteLine("Соединение " + _ConnectionString + " открыто."). В этом примере, я думаю, что использование StringBuilder скорее не оправдано с точки зрения эффективности - я просто хотел обратить внимание читателя на еще один нюанс работы со строками.

Фрагмент кода

С каждым шагом примеры становятся все объемнее и объемнее, и приходится в качестве фрагментов кода демонстрировать только наиболее важные моменты. В данном случае этим моментом является чтение текстового файла. Код, осуществляющий запись в текстовый файл, “перемешан” с кодом обработки результата запроса, и с ним можно ознакомиться, скачав программы целиком. В случае чтение данных из файла использован так называемый цикл с постусловием, который выполняется минимум один раз, поскольку условие завершения цикла находится в конце всей конструкции. Обратите внимание, что на языке C# цикл с постусловием выполняется до тех пор, пока условие истинно (while (_TextString != null)), в то время как на VB.NET цикл с постусловием выполняется до тех пор, пока условие не станет истинным (Until _TextString Is Nothing), т.е. пока условие ложно.

C#:
 try
 {
     using (StreamReader _FileReader = File.OpenText(_ConfigFileName))
     {
         string _TextString = null;

         do
         {
             _TextString = _FileReader.ReadLine();

             if (_TextString != null)
                 if (_ConnectionString.Length == 0)
                     _ConnectionString = _TextString;
                 else
                     _Query += _TextString;

         } while (_TextString != null);
     }
 }
 catch (Exception ex)
 {
     Console.WriteLine("Произошла ошибка чтение файла настроек: " + ex.Message);
     Console.WriteLine("Нажмите любую кнопку для выхода...");
     Console.ReadKey();
     return;
 }
VB.NET:
Try
   Using _FileReader As StreamReader = File.OpenText(_ConfigFileName)
     Dim _TextString As String = Nothing

     Do
       _TextString = _FileReader.ReadLine()

       If Not _TextString Is Nothing Then
          If _ConnectionString.Length = 0 Then
             _ConnectionString = _TextString
          Else
             _Query += _TextString
          End If
       End If

     Loop Until _TextString Is Nothing
   End Using
 Catch ex As Exception
   Console.WriteLine("Произошла ошибка чтение файла настроек: " + ex.Message)
   Console.WriteLine("Нажмите любую кнопку для выхода...")
   Console.ReadKey()
   Return
 End Try

Полные версии алгоритмов

На языке C#.
На языке VB.NET.

Тестовый набор данных

Файл базы данных Microsoft Access Data.rar (Data.mdb).
Файл с настройками соединения и SQL запросом Config_txt.rar (Config.txt).

Резюме

Программы этого шага уже несложно привести к виду законченной утилиты, выполняющей нечто полезное. Рекомендую пофантазировать на эту тему и, если получится сочинить что-то действительно востребованное, закрепить результат в виде исполняемого exe-файла, создать который можно в обучающей программе Coding Craft Studio, перейдя в меню [Сборка].

Далее: Работа с базой данных и XML файлами



Компьютерные курсы и курсы программирования
Основы программирования

Курс для начинающих программистов на C# и VB.NET.

SQL 25™

Построение SQL запросов и работа с базой данных.

C# Quick Guide™

Программирование на C#. Краткое руководство.

RegEx

Применение регулярных выражений.

Plug-in архитектура

Примеры программной Plug-in архитектуры.

XML и его расширения

Язык разметки XML и его расширения с примерами.

HTML и разметка гипертекста

Языки HTML, XHTML и CSS с примерами разметки.

Основы веб-дизайна

Основы веб-дизайна: решения типовых задач верстки.

Программирование на PHP

Руководство по программированию на PHP для начинающих.

Справочные материалы

Шаблоны проектирования
Каталог шаблонов проектирования программных компонентов.

Рефакторинг кода
Каталог приемов рефакторинга программного кода.

Гость
Имя

Пароль



Забыли пароль?
Запросите новый здесь
.
Coding Craft. Все права защищены © 2011. Проект Инициативного Народного Фронта Образования - ИНФО-проект.