ADO.NET – це набір класів (фреймворк) для роботи з базами даних та XML-файлами. Абревіатура ADO розшифровується як ActiveX Data Objects.
Ця технологія містить методи та класи для отримання та обробки даних.
Двома основними компонентами архітектури ADO.NET є постачальник даних та автономна модель.
Постачальник даних - це простір імен, який дозволяє підключитися до джерела даних та отримати інформацію, тоді як автономна модель використовується для зберігання цих даних на стороні клієнта.
Як вже згадувалося, постачальник даних у .NET Framework використовується для:
System.Data.SqlClientSystem.Data.OleDbSystem.Data.OdbcSystem.Data.OracleClientКожен постачальник містить набір класів для:
Connection)Command)DataReader)DataAdapter)Connection ClassЦі класи використовуються для підключення до БД.
Command ClassЦей клас забезпечує зберігання та виконання SQL-команд. Основні команди:
ExecuteReader: Повертає дані у вигляді рядківExecuteNonQuery: Виконує команди, що змінюють даніExecuteScalar: Повертає лише одне значенняExecuteXMLReader: Отримує дані з SQL Server у XML-форматіDataReader ClassВикористовується для читання даних разом з Command Class
DataAdapter ClassМістить набір SQL-команд для заповнення DataSet
DataSet ClassОсновний клас ADO.NET, що містить колекцію DataTable
Даний код на C# демонструє базову роботу з базою даних Microsoft Access через технологію ADO.NET. Програма підключається до бази даних, виконує SQL-запит для отримання даних і виводить результати у консоль.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data.OleDb;
namespace Adonet1
{
internal class Program
{
static void Main(string[] args)
{
// Встановлюємо кодування UTF-16 для вводу та виводу
Console.OutputEncoding = Encoding.Unicode;
Console.InputEncoding = Encoding.Unicode;
// 1. Підключаємось до бази даних Access
string connectionString = @"Provider=Microsoft.ACE.OLEDB.16.0;Data Source=|DataDirectory|\Книги.mdb";
OleDbConnection connection = new OleDbConnection(connectionString);
try
{
// 2. Відкриваємо підключення
connection.Open();
// 3. Створюємо запит для отримання всіх книг
string query = "SELECT * FROM Книги";
OleDbCommand command = new OleDbCommand(query, connection);
// 4. Виконуємо запит та отримуємо дані
OleDbDataReader reader = command.ExecuteReader();
Console.WriteLine("Список книг:");
// 5. Читаємо дані та виводимо назви книг
while (reader.Read())
{
Console.WriteLine(reader["Название"].ToString());
}
// 6. Закриваємо читання та підключення
reader.Close();
}
catch (Exception ex)
{
Console.WriteLine("Помилка: " + ex.Message);
}
finally
{
connection.Close(); // Закриваємо підключення в будь-якому випадку
Console.ReadKey();
}
}
}
}
Примітка: ADO.NET — це набір класів у .NET Framework, які надають доступ до даних з різних джерел, включаючи реляційні бази даних.
Крок 1: Створення проекту Console Application
Крок 2:Підготовка бази даних Access


Крок 3: Додавання посилання на бібліотеку Access


Вирішення:

Крок 3: Написання коду для підключення
using System.Data.OleDb; // Для роботи з базами даних через OLEDBДодати у проект using System.Data.OleDb;Перш за все, код встановлює кодування UTF-16 для консолі, щоб правильно відображати кириличні символи:
Створюється рядок підключення, який містить інформацію про провайдера та шлях до файлу бази даних:
Увага: Для роботи з форматом .mdb через провайдер Microsoft.ACE.OLEDB.16.0 необхідно мати встановлений Microsoft Access Database Engine.
Код використовує блок try-catch-finally для безпечного відкриття підключення та обробки можливих помилок:
Створюється об'єкт OleDbCommand для виконання SQL-запиту, а потім OleDbDataReader для читання результатів:
Після завершення роботи з даними необхідно закрити всі відкриті ресурси:

Крок 1:Створення проекту Windows Forms

Крок 2:Підготовка бази даних Access


Крок 3: Додавання посилання на бібліотеку Access

Крок 4: Створення інтерфейсу





Основні невізуальні компоненти ADO.NET:
OleDbConnection: Підключення до БДOleDbCommand: Виконання SQL-командOleDbDataAdapter: Міст між БД та DataSetDataSet: Структура даних у пам'ятіBindingSource: Керування прив'язкою данихnamespace SUBD
{
partial class Form1
{
///
/// Обязательная переменная конструктора.
///
private System.ComponentModel.IContainer components = null;
///
/// Освободить все используемые ресурсы.
///
/// истинно, если управляемый ресурс должен быть удален; иначе ложно.
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Код, автоматически созданный конструктором форм Windows
///
/// Требуемый метод для поддержки конструктора — не изменяйте
/// содержимое этого метода с помощью редактора кода.
///
private void InitializeComponent()
{
this.components = new System.ComponentModel.Container();
this.dataGridView1 = new System.Windows.Forms.DataGridView();
this.кодкнигиDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.авторDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.названиеDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.издательствоDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.серияDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.годизданияDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.ценаDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.книгиBindingSource = new System.Windows.Forms.BindingSource(this.components);
this.книгиDataSetBindingSource = new System.Windows.Forms.BindingSource(this.components);
this.книгиDataSet = new SUBD.КнигиDataSet();
this.книгиTableAdapter = new SUBD.КнигиDataSetTableAdapters.КнигиTableAdapter();
this.buttonLoadData = new System.Windows.Forms.Button();
this.button1 = new System.Windows.Forms.Button();
((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.книгиBindingSource)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.книгиDataSetBindingSource)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.книгиDataSet)).BeginInit();
this.SuspendLayout();
//
// dataGridView1
//
this.dataGridView1.AutoGenerateColumns = false;
this.dataGridView1.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
this.dataGridView1.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
this.dataGridView1.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] {
this.кодкнигиDataGridViewTextBoxColumn,
this.авторDataGridViewTextBoxColumn,
this.названиеDataGridViewTextBoxColumn,
this.издательствоDataGridViewTextBoxColumn,
this.серияDataGridViewTextBoxColumn,
this.годизданияDataGridViewTextBoxColumn,
this.ценаDataGridViewTextBoxColumn});
this.dataGridView1.DataSource = this.книгиBindingSource;
this.dataGridView1.Dock = System.Windows.Forms.DockStyle.Top;
this.dataGridView1.GridColor = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(255)))), ((int)(((byte)(255)))));
this.dataGridView1.Location = new System.Drawing.Point(0, 0);
this.dataGridView1.Name = "dataGridView1";
this.dataGridView1.RowHeadersWidth = 62;
this.dataGridView1.RowTemplate.Height = 28;
this.dataGridView1.Size = new System.Drawing.Size(1132, 457);
this.dataGridView1.TabIndex = 0;
//
// кодкнигиDataGridViewTextBoxColumn
//
this.кодкнигиDataGridViewTextBoxColumn.DataPropertyName = "Код_книги";
this.кодкнигиDataGridViewTextBoxColumn.HeaderText = "Код_книги";
this.кодкнигиDataGridViewTextBoxColumn.MinimumWidth = 8;
this.кодкнигиDataGridViewTextBoxColumn.Name = "кодкнигиDataGridViewTextBoxColumn";
this.кодкнигиDataGridViewTextBoxColumn.Width = 150;
//
// авторDataGridViewTextBoxColumn
//
this.авторDataGridViewTextBoxColumn.DataPropertyName = "Автор";
this.авторDataGridViewTextBoxColumn.HeaderText = "Автор";
this.авторDataGridViewTextBoxColumn.MinimumWidth = 8;
this.авторDataGridViewTextBoxColumn.Name = "авторDataGridViewTextBoxColumn";
this.авторDataGridViewTextBoxColumn.Width = 150;
//
// названиеDataGridViewTextBoxColumn
//
this.названиеDataGridViewTextBoxColumn.DataPropertyName = "Название";
this.названиеDataGridViewTextBoxColumn.HeaderText = "Название";
this.названиеDataGridViewTextBoxColumn.MinimumWidth = 8;
this.названиеDataGridViewTextBoxColumn.Name = "названиеDataGridViewTextBoxColumn";
this.названиеDataGridViewTextBoxColumn.Width = 150;
//
// издательствоDataGridViewTextBoxColumn
//
this.издательствоDataGridViewTextBoxColumn.DataPropertyName = "Издательство";
this.издательствоDataGridViewTextBoxColumn.HeaderText = "Издательство";
this.издательствоDataGridViewTextBoxColumn.MinimumWidth = 8;
this.издательствоDataGridViewTextBoxColumn.Name = "издательствоDataGridViewTextBoxColumn";
this.издательствоDataGridViewTextBoxColumn.Width = 150;
//
// серияDataGridViewTextBoxColumn
//
this.серияDataGridViewTextBoxColumn.DataPropertyName = "Серия";
this.серияDataGridViewTextBoxColumn.HeaderText = "Серия";
this.серияDataGridViewTextBoxColumn.MinimumWidth = 8;
this.серияDataGridViewTextBoxColumn.Name = "серияDataGridViewTextBoxColumn";
this.серияDataGridViewTextBoxColumn.Width = 150;
//
// годизданияDataGridViewTextBoxColumn
//
this.годизданияDataGridViewTextBoxColumn.DataPropertyName = "Год_издания";
this.годизданияDataGridViewTextBoxColumn.HeaderText = "Год_издания";
this.годизданияDataGridViewTextBoxColumn.MinimumWidth = 8;
this.годизданияDataGridViewTextBoxColumn.Name = "годизданияDataGridViewTextBoxColumn";
this.годизданияDataGridViewTextBoxColumn.Width = 150;
//
// ценаDataGridViewTextBoxColumn
//
this.ценаDataGridViewTextBoxColumn.DataPropertyName = "Цена";
this.ценаDataGridViewTextBoxColumn.HeaderText = "Цена";
this.ценаDataGridViewTextBoxColumn.MinimumWidth = 8;
this.ценаDataGridViewTextBoxColumn.Name = "ценаDataGridViewTextBoxColumn";
this.ценаDataGridViewTextBoxColumn.Width = 150;
//
// книгиBindingSource
//
this.книгиBindingSource.DataMember = "Книги";
this.книгиBindingSource.DataSource = this.книгиDataSetBindingSource;
//
// книгиDataSetBindingSource
//
this.книгиDataSetBindingSource.DataSource = this.книгиDataSet;
this.книгиDataSetBindingSource.Position = 0;
//
// книгиDataSet
//
this.книгиDataSet.DataSetName = "КнигиDataSet";
this.книгиDataSet.Namespace = "http://tempuri.org/КнигиDataSet.xsd";
this.книгиDataSet.SchemaSerializationMode = System.Data.SchemaSerializationMode.IncludeSchema;
//
// книгиTableAdapter
//
this.книгиTableAdapter.ClearBeforeFill = true;
//
// buttonLoadData
//
this.buttonLoadData.Location = new System.Drawing.Point(690, 468);
this.buttonLoadData.Name = "buttonLoadData";
this.buttonLoadData.Size = new System.Drawing.Size(197, 60);
this.buttonLoadData.TabIndex = 1;
this.buttonLoadData.Text = "Отобразить данные таблицы";
this.buttonLoadData.UseVisualStyleBackColor = true;
this.buttonLoadData.Click += new System.EventHandler(this.buttonLoadData_Click);
//
// button1
//
this.button1.Location = new System.Drawing.Point(83, 463);
this.button1.Name = "button1";
this.button1.Size = new System.Drawing.Size(165, 57);
this.button1.TabIndex = 2;
this.button1.Text = "Закрыть приложение";
this.button1.UseVisualStyleBackColor = true;
this.button1.Click += new System.EventHandler(this.button1_Click);
//
// Form1
//
this.AutoScaleDimensions = new System.Drawing.SizeF(9F, 20F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(1132, 540);
this.Controls.Add(this.button1);
this.Controls.Add(this.buttonLoadData);
this.Controls.Add(this.dataGridView1);
this.Name = "Form1";
this.Text = "Form1";
((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.книгиBindingSource)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.книгиDataSetBindingSource)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.книгиDataSet)).EndInit();
this.ResumeLayout(false);
}
#endregion
private System.Windows.Forms.DataGridView dataGridView1;
private System.Windows.Forms.BindingSource книгиDataSetBindingSource;
private КнигиDataSet книгиDataSet;
private System.Windows.Forms.BindingSource книгиBindingSource;
private КнигиDataSetTableAdapters.КнигиTableAdapter книгиTableAdapter;
private System.Windows.Forms.DataGridViewTextBoxColumn кодкнигиDataGridViewTextBoxColumn;
private System.Windows.Forms.DataGridViewTextBoxColumn авторDataGridViewTextBoxColumn;
private System.Windows.Forms.DataGridViewTextBoxColumn названиеDataGridViewTextBoxColumn;
private System.Windows.Forms.DataGridViewTextBoxColumn издательствоDataGridViewTextBoxColumn;
private System.Windows.Forms.DataGridViewTextBoxColumn серияDataGridViewTextBoxColumn;
private System.Windows.Forms.DataGridViewTextBoxColumn годизданияDataGridViewTextBoxColumn;
private System.Windows.Forms.DataGridViewTextBoxColumn ценаDataGridViewTextBoxColumn;
private System.Windows.Forms.Button buttonLoadData;
private System.Windows.Forms.Button button1;
}
}
Крок 5:Написання коду для підключення
// Підключення необхідних просторів імен
using System.Data; // Для роботи з даними
using System.Data.OleDb; // Для роботи з базами даних через OLEDB
using System.Windows.Forms; // Для роботи з формою та елементами керування
// Простір імен програми
namespace SUBD
{
// Головна форма програми
public partial class Form1 : Form
{
// Рядок підключення до бази даних Access
private string connectionString = @"Provider=Microsoft.ACE.OLEDB.16.0;Data Source=[DataDirectory|\Книги.mdb";
// Конструктор форми
public Form1()
{
InitializeComponent(); // Ініціалізація компонентів форми
}
// Обробник події натискання кнопки завантаження даних
private void buttonLoadData_Click(object sender, EventArgs e)
{
// Використання з'єднання з базою даних
using (OleDbConnection connection = new OleDbConnection(connectionString))
{
try
{
connection.Open(); // Відкриття з'єднання
// Створення адаптера даних для виконання SQL-запиту
OleDbDataAdapter adapter = new OleDbDataAdapter("SELECT * FROM Книги", connection);
// Створення таблиці для зберігання результатів
DataTable dataTable = new DataTable();
// Заповнення таблиці даними
adapter.Fill(dataTable);
// Відображення даних у DataGridView
dataGridView1.DataSource = dataTable;
}
catch (Exception ex)
{
// Виведення повідомлення про помилку
MessageBox.Show("Помилка: " + ex.Message);
}
}
}
// Обробник події натискання кнопки виходу
private void button1_Click(object sender, EventArgs e)
{
Application.Exit(); // Закриття програми
}
}
}
