Підключення до БД

Як вже говорилося вище, для підключення до джерела даних з використанням ADO.NET необхідно скористатися об'єктом Connection.

Для розгляду прикладів підключень до джерел даних перш за все необхідно вибрати постачальника даних, з яким працюватиме додаток. Потім необхідно підключити відповідні простори імен, що містять визначення об'єктів вибраного постачальника. Як приклади підключення до джерел даних розглядуватимемо бази даних Access і SQL Server 2005 Express Edition. Такий вибір продиктований перш за все тим, що Access дуже добре підходить для побудови невеликих інформаційних систем, невимогливий до ресурсів комп'ютера, не вимагає установки спеціального програмного забезпечення. SQL Server Express є вільно поширюваній СУБД, що володіє всіма достоїнствами комерційного SQL Server 2005 і що має ряд обмежень, зокрема на максимальний об'єм бази даних (не більше 4 Гб). Всі прийоми роботи з базами даних, описувані нижче, можуть бути використані також для роботи з комерційними версіями продуктів Microsoft і іншими СУБД.

Отже, для того, щоб підключитися до бази даних під час виконання програми, необхідно створити об'єкт Connection, а також задати його властивості, що визначають поточні параметри підключення.

Основним параметром, що встановлює необхідні опції для підключення до БД, є рядок з'єднання, який є набором пар "ім'я-значення", розділених крапкою з комою. Порядок проходження значень цих параметрів, а також їх регістр не важливі. Рядок з'єднання залежить від СУБД, до якої здійснюється підключення, а також від використовуваного постачальника даних. Проте існує декілька фрагментів інформації, що указується в рядку підключення, які необхідні практично завжди. Перерахуємо їх і прокоментуємо їх призначення.

1. Сервер, на якому знаходиться база даних. Якщо СУБД, до якої здійснюється підключення, розташована на клієнтському комп'ютері (так буде у всіх прикладах, що розглядуються в рамках даного курсу), то замість імені сервера необхідно указувати ім'я localhost або IP-адрес 127.0.0.1.

2. Ім'я бази даних, до якої проводиться підключення.

3. Спосіб аутентифікації користувача. Існуючі клієнт-серверні СУБД (до яких відноситься SQL Server, Oracle і ряд інших) дозволяють указувати в рядку підключення ім'я користувача і пароль, які будуть потрібні для перевірки можливості доступу до бази даних, або використовувати параметри поточного користувача.

Побудова Web-додатків для роботи з базами даних різних видів практично ідентичні. Основна відмінність полягає в способі організації доступу до самої бази, тобто в способі підключення до неї.

Для підключення до БД використовується об'єкт Connection з простору імен System.Data.SqlClient у випадку з SQL Server і System.Data.OleDb - у випадку з іншими джерелами даних, наприклад, Access. Рядки з'єднання з базами даних при цьому виглядатимуть таким чином:

string strSqlConnection = "Data Source=localhost\\sqlexpress;Initial Catalog = TEST_DB; Integrated Security=SSPI string strOleDbConnection = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source = C:\\Projects\\Ex_Db\\App_Data\\TEST_DB.mdb";

Для відкриття з'єднання з базою даних необхідно викликати метод Open об'єкту Connection. При цьому рядок з'єднання з БД можна передати як як параметр конструктора об'єкту, так і потім за допомогою установки відповідної властивості.

SqlConnection sqlCon=new SqlConnection(strSqlConnection);sqlCon.Open(); OleDbConnection oleDbCon=new OleDbConnection();oleDbCon.ConnectionString=strOleDbConnection;oleDbCon.Open();

Рядок з'єднання з базою даних можна жорстко прописати в початковому коді додатка, проте це не самий кращий варіант, оскільки при зміні шляху до бази даних або інших параметрів з'єднання доведеться вносити зміни в початковий код додатка і перекомпілювати його. У зв'язку з цим краще всього використовувати рядок з'єднання, збережений у файлі web.config.

<connectionStrings|> <add name="TEST_DBConnectionString" connectionString="Provider = Microsoft.Jet.OLEDB.4.0; Data Source = C:\Projects\Ex_Db\App_Data\TEST_DB.mdb"/><connectionStrings>

Згодом цей рядок можна витягувати з файлу web.config.

string strOleDbConnection = WebConfigurationManager.ConnectionStrings["TEST_DBConnectionString"].ConnectionString;

Управління з'єднанням здійснюється дуже легко. Методи Open і Close об'єкту Connection виконують всю роботу. Проте слід враховувати, що при підключенні до бази даних може статися збій, в результаті якого встановити з'єднання з нею опиниться неможливо. Це може бути особливе актуальним при розміщенні бази даних на іншому сервері, який у момент підключення може виявитися недоступним. Для того, щоб невдала спроба з'єднання з базою даних не приводила до фатальних наслідків при роботі додатка, необхідно використовувати конструкції try catch, що дозволяють адекватно реагувати на виниклу помилку. Наступний приклад демонструє можливість використання такого підходу.

try{ sqlCon.Open(); lbl_DB.Text = "<b>Сервер:</b>"+sqlCon.ServerVersion; lbl_DB.Text += "</br><b>Соединение:</b>" + sqlCon.ToString();}catch(Exception ex){ lbl_DB.Text = "При з'єднанні з БД сталася помилка "; lbl_DB.Text += ex.Message;}finally|{ sqlCon.Close(); lbl_DB.Text += "</br><b>Соединение:</b>"; lbl_DB.Text += sqlCon.State.ToString();}

Для обслуговування з'єднання з базою даних витрачаються ресурси комп'ютера, на якому виконується Web-додаток. У зв'язку з цим рекомендується відкривати з'єднання якомога пізніше, а закривати якомога раніше, відразу після того, як всі необхідні дії з об'єктами бази даних були виконані. Крім того, бажано будувати програмний код так, щоб з'єднання з базою даних закривалося при будь-якому результаті з'єднання з нею. У попередньому прикладі код, розташований в блоці finally, виконається при будь-якому результаті спроби підключення, що гарантує звільнення ресурсів сервера, не чекаючи моменту, коли пам'ять буде звільнена складальником сміття.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: