002 – Вивід таблиці бази даних Microsoft Access в компоненті dataGridView

Вивід таблиці бази даних Microsoft Access в компоненті dataGridView


Зміст


Умова задачі

Нехай маємо базу даних, створену в програмі Microsoft Access.

Ім’я файлу бази даних “mydb.mdb“. Файл розміщується на диску за таким шляхом:

C:\Programs\C_Sharp\Train_01\WindowsFormsApplication1\mydb.mdb

База даних має декілька таблиць, одна з яких має назву “Order“.
Задача полягає в тому, щоб з допомогою засобів мови C# здійснити підключення до бази даних та вивести таблицю з іменем “Order” на форму.

Додаток реалізувати як Windows Forms Application.

Загальний вигляд таблиць бази даних та зв’язків між ними представлений на рис. 1.

Microsoft Access схема бази даних

Рис. 1. Зв’язки між таблицями бази даних

 


Розв’язок

1. Створення додатку за шаблоном Windows Forms Application.

Завантажити Microsoft Visual Studio. Створити додаток типу Windows Forms Application. Приклад створення нового додатку детально описаний тут.
Вихідний код форми додатку має вигляд:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace WindowsFormsApplication1
{
   public partial class Form1 : Form
   {
       public Form1()
       {
           InitializeComponent();
       }
   }
}

Як бачимо, у просторі імен WindowsFormsApplication1 є лише конструктор форми, в якому викликається метод InitializeComponent().

 


2. Підключення до бази даних. Читання рядка підключення Connection String.

Здійснюємо підключення бази даних MS Access до нашого додатку.

У результаті отримуємо рядок підключення до бази даних (Connection String). Цей рядок буде в подальшому використаний в нашій програмі.

Щоб отримати коректний текст рядка підключення до бази даних треба виділити назву бази даних в панелі Server Explorer (mydb.mdb) і у вікні “Properties” прочитати (скопіювати) значення властивості “Connection String” (рис. 2, червоне обведення).

База даних Microsoft Access властивість Connection String

Рис. 2. Читання властивості Connection String

 


3. Розміщення компонента типу dataGridView.

Виводимо на форму компонент dataGridView, що представляє собою компонент-таблицю, в якій буде виводитись наша таблиця “Order” з бази даних. Отримуємо змінну з назвою dataGridView1.

Microsoft Visual Studio компонент "DataGridView"

Рис. 3. Компонент “DataGridView” на панелі Toolbox

 

02_02_00_002_04_

Рис. 4. Компонент dataGridView на основній формі

 


4. Редагування програмного коду.

4.1. Додавання змінних SQL-запиту та рядка підключення до БД.

Активуємо текст модуля Form1.cs (основна форма). В програмний код форми вводимо додаткові змінні CmdText і ConnString.

Змінна CmdText містить текст SQL-запиту для виведення усіх записів таблиці “Order“. Змінна ConnString представляє собою рядок підключення до бази даних (див. п.2). Загальний вигляд коду класу форми наступний:

public partial class Form1 : Form
{
    public string CmdText = "SELECT * FROM [Order]";
    public string ConnString = "Provider=Microsoft.Jet.OLEDB.4.0;DataSource=C:\\Programs\\C_Sharp\\WindowsFormsApplication1\\mydb.mdb";
    public Form1()
    {
        InitializeComponent();
    }
}

 


4.2. Створення об’єкту типу OleDbDataAdapter.

В конструктор форми після виклику InitializeComponent(); додаємо рядок створення об’єкту типу OleDbDataAdapter:

OleDbDataAdapter dA = new OleDbDataAdapter(CmdText, ConnString);

Об’єкт типу OleDbDataAdapter пересилає набори даних з викликаючого процесу і назад. Адаптери даних містять набір з чотирьох внутрішніх об’єктів команд. Це команди читання, вставки, зміни і видалення інформації. Як видно з програмного коду, конструктор об’єкту отримує вхідними параметрами рядок запиту на мові SQL та рядок підключення до бази даних. Отже, об’єкт адаптеру даних уже зв’язаний з нашою базою даних.



 

 

4.3. Створення об’єкту набору даних DataSet.

Після створення адаптера даних (OleDbDataAdapter) викликаємо створюємо об’єкт типу DataSet (набір даних):

DataSet ds = new DataSet();

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

 

 

4.4. Заповнення таблиці “Order” на основі SQL-запиту.

Наступна команда – це заповнення набору даних (змінна ds) значеннями записів з бази даних на основі SQL-запиту, що міститься в адаптері даних dA з допомогою методу Fill():

dA.Fill(ds, "[Order]");

 

 

4.5. Візуалізація даних в dataGridView1.

На даний момент дані з таблиці “Order” зчитані в об’єкті ds (типу DataSet), що представляє собою набір даних.

Для їх відображення необхідно щоб властивість DataSource компонента dataGridView1 посилалась на першу таблицю (у нас одна таблиця) набору даних ds. Програмний код має наступний вигляд:

dataGridView1.DataSource = ds.Tables[0].DefaultView;

Після цього дані з таблиці “Order” відобразяться на формі (рис. 5).

 


5. Весь програмний код.

Загальний лістинг класу основної форми матиме наступний вигляд:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.OleDb;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public string CmdText = 
         "SELECT * FROM [Order]";
        public string ConnString =
"Provider=Microsoft.Jet.OLEDB.4.0;DataSource=C:\\Programs\\C_Sharp\\Train_12\\WindowsFormsApplication1\\mydb.mdb";
        public Form1()
        {
            InitializeComponent();
            OleDbDataAdapter dataAdapter = new OleDbDataAdapter(CmdText, ConnString);
            // створення об'єкту типу DataSet
            DataSet ds = new DataSet();
            // заповнення таблиці "Order"
            dataAdapter.Fill(ds, "[Order]");
            dataGridView1.DataSource = ds.Tables[0].DefaultView;
        }
    }
}

 

Visual Studio Windows Forms програма

Рис. 5. Результат виконання програми

 


6. Схема взаємодії.

Схема взаємодії між об’єктами представлена на рис. 6.

Microsoft Access Схема взаємодії рисунок

Рис. 6. Схема взаємодії між об’єктами для доступу до бази даних

Таким чином можна виводити на форму будь-яку таблицю бази даних. Умови виведення даних з бази даних задаються в рядку SQL-запиту в змінній CmdText.
Наприклад, якщо в CmdText задати такий рядок:

CmdText = "SELECT * FROM [Order] WHERE [NameOfSender] LIKE 'І%'";

то в результаті з бази даних будуть виведені ті записи, які починаються на букву ‘І‘ (Іванов, Іващенко і т.д.).

 


Зв’язані теми