2. Принципы работы с базами данных с помощью технологии ADO.NET С# имеет свои средства для подключения и обращения к базам данных. Эти средства объединены в технологии ADO.NET. Средства этой технологии позволяют как обращаться к базе данных посредством запросов и команд на изменение данных, так и работать с так называемыми отсоединенными наборами данных, которые позволяют экономить время и уменьшать нагрузку на соединение с базой данных. Разберем основные средства работы с базой данных в рамках стандартного обращения «запрос-ответ». Средства работы с базами данных объединены в пространстве имен using System.Data; а также в специализированных пространствах имен, которые особенностями технологии соединения с базой данных, например, отличаются using System.Data.OleDb; Для обращения к базе данных требуется выполнить несколько этапов: 1. Создать объект соединения с базой данных: OleDbConnection conn=new OleDbConnection(); 2. Задать строку подключения к базе данных: // строка подключения к базе «control» в SQL Server conn.ConnectionString="Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=control;Data Source=(local)"; Для получения строки подключения можно воспользоваться специальной утилитой операционной системы – создать файл с расширением .udl, задать описание строки подключения в диалоговом режиме, затем строку подключения можно посмотреть, открыв файл в текстовом режиме (например, в блокноте). 3. Требуется открыть соединение с базой данных: conn.Open(); 4. Далее формируются и выполняются команды // создается объект команды OleDbCommand command=new OleDbCommand(); // задается текст команды command.CommandText="Select * from Zakaz"; // задается соединение, к которому относится команда command.Connection=conn; // выполнение команды. Результат выполнения представляет собой курсор – // таблицу, которую можно обрабатывать построчно OleDbDataReader dr=command.ExecuteReader(); // цикл просмотра строк результата запроса while(dr.Read()) { // объект dr расположен на текущей строке таблицы, // к столбцам можно обратиться по имени, указав их в качестве // индекса массива элементов строки Console.WriteLine(""+dr["client"]+"\t"+dr["address"]+ "\t"+dr["comment"]); } dr.Close(); 5. Если выполняется команда на изменение данных, при выполнении команды используется функция command.ExecuteNonQuery(); или command.ExecuteScalar(); 6. В случае возникновения ошибки для корректной обработки этой ошибки и получения информации о ней нужно воспользоваться механизмом обработки исключительных ситуаций try { // команды, в которых может возникнуть ошибка. // Если ошибка возникнет, управление передается в блок catch, // который следует за блоком try } catch(OleDbException e) { // обработчик ошибки с базой данных – распечатка информации об ошибке Console.WriteLine(e.ToString()); }