Извлечение строки соединения по имени



Ниже рассматривается способ получения строки соединения из файла конфигурации путем указания ее имени. Будет создан объект ConnectionStringSettings, сопоставляя указанный входной параметр с именем ConnectionStrings. Если совпадающее имя не найдено, метод возвратит значение null.

6. Добавьте в проект файл конфигурации приложения (меню Проект à Добавить новый элемент), оставьте имя по умолчанию – App.config.

7. Откройте файл конфигурации и между тегами <configuration> добавьте информацию о подключении (значение для свойства connectionString скопируйте у переменной testConnect):

<connectionStrings>

<add name="DBConnect.NorthwindConnectionString"

   connectionString="Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=Northwind;Data Source=(local)"

   providerName="System.Data.OleDb" />

</connectionStrings>

8. В коде формы закомментируйте инициализацию переменной соединения testConnect.

9. После конструктора формы добавьте статический метод, возвращающий значение строки соединения по ее имени:

   static string GetConnectionStringByName(string name)

   {

       string returnValue = null;

       ConnectionStringSettings settings =

           ConfigurationManager.ConnectionStrings[name];

       if (settings != null)

           returnValue = settings.ConnectionString;

       return returnValue;

   }

10. После метода объявите переменную testConnect и присвойте ей значение, возвращаемое из метода путем передачи ему в качестве аргумента значение свойства name (см. файл конфигурации приложения):

string testConnect = GetConnectionStringByName("DBConnect.NorthwindConnectionString");

11. Запустите приложение и попробуйте выполнить соединение с базой данных. Теперь значение строки подключения берется из файла конфигурации. Должно появиться окно, подтверждающее успешность соединения.

 

Практическое занятие 2. Выполнение команд

В предыдущих упражнениях было показан процесс подключения к серверу. После подключения к базе данных обычно требуется получить определенные данные. Это можно реализовать с помощью выполняемых на сервере команд. Для выполнения команд используются объекты класса OleDbCommand. У конструктора нет параметров, достаточно проинициализировать объект значением по умолчанию. После этого в свойство commandText нужно поместить SQL-запрос, и выполнить его.

Для выполнения запросов существует несколько методов. Все зависит от того, какой результат требуется получить.

Упражнение 1. Получение скалярного значения

В этом упражнении Вы реализуете возможность получения одиночного значения.

1. Откройте приложение, построенное в предыдущем упражнении.

2. Добавьте на форму кнопку Button и текстовый элемент Label. Для обоих элементов свойству Text укажите значение Сколько продуктов.

3. В обработчике события Click сначала проверьте наличие соединения и создайте объект OleDbCommand.

4. Установите в свойстве Connection требуемый объект соединения.

5. В свойстве укажите CommandText текст запроса на подсчет числа записей в таблице Products.

6. Объявите переменную целого типа и для выполнения SQL-команды используйте метод ExecuteScalar(). Он подходит для тех случаев, когда запрос возвращает только одно значение. Результат метода ExecuteScalar() универсален и имеет тип данных object, и в данном случае его следует явно привести к числовому типу.

7. Результат запроса верните в свойство Text элемента Label.

В итоге код может иметь следующий вид:

if (connection.State == ConnectionState.Closed)

       {

           MessageBox.Show("Сначала подключитесь к базе");

           return;

       }

       OleDbCommand command = new OleDbCommand();

       command.Connection = connection;

       command.CommandText = "SELECT COUNT(*) FROM Products";

       int number = (int)command.ExecuteScalar();

       label1.Text = number.ToString();

Протестируйте приложение.

Упражнение 2. Получение набора данных

Для выполнения запросов, возвращающих наборы данных, используется класс OleDbCommand. Метод ExecuteReader() выполняет запрос и возвращает объект класса OleDbDataReader, через который можно просмотреть набор данных результата.

В этом упражнении реализуется возможность считывания требуемого содержимого таблицы Products в компонент Listview.

1. Откройте приложение, построенное в предыдущем упражнении.

2. Добавьте на форму кнопку Button и компонент Listview.

3. Для кнопки свойству Text укажите значение Список продуктов.

4. Для Listview:

a. свойству Size установите размер 180;170,

b. в свойстве Columns добавьте столбец с заголовком (свойство text): Название продукта,

c. свойству View – вид отображения Details.

5. В обработчике события Click желательно сначала проверить наличие соединения (как в прошлом упражнении) и создайте объект OleDbCommand. В отличие от прошлого упражнения для создания объекта oleDBCommand используйте метод CreateCommand() объекта соединения. Этот метод инициализирует новый объект для выполнения команд, в качестве соединения устанавливает себя и возвращает созданный объект в качестве результата:

OleDbCommand command = connection.CreateCommand();

В прошлом упражнении Вы проинициализировали переменную самостоятельно конструктором класса OleDbCommand и установили в свойство connection нужный объект соединения. Оба способа идентичны.

6. В свойстве укажите CommandText текст запроса на выборку продуктов (поле ProductName) в таблице Products.

7. Для того чтобы получить набор данных выполните SQL-команду с помощью метода ExecuteReader(). Она возвращает в качестве результата объект OleDbDataReader, через который и читаются данные результата.

OleDbDataReader reader = command.ExecuteReader();

8. Для считывания данных построчно используйте цикл, а для получения очередной строки данных вызовите Read() класса OleDbDataReader. Этот метод возвращает булево значение, которое определяет, прочиталась ли очередная строка. Если мы достигли конца набора данных, то результатом вызова метода будет false:

while (reader.Read())

{

   listView1.Items.Add(reader["ProductName"].ToString());

}

9. В итоге код может иметь следующий вид:

OleDbCommand command = connection.CreateCommand();

 command.CommandText = "SELECT ProductName FROM Products";

 OleDbDataReader reader = command.ExecuteReader();

while (reader.Read())

{

  listView1.Items.Add(reader["ProductName"].ToString());

}

10. Запустите и протестируйте приложение.


Дата добавления: 2019-02-26; просмотров: 177; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!