Инфоурок Другое Другие методич. материалыИспользование БД Access в приложении на C#

Использование БД Access в приложении на C#

Скачать материал

Использование БД Access в приложения на C# В данной работе будет продемонстрирован один из способов подключения базы данных Access к приложению на C#, а также выполнение некоторых запросов к базе данных.

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

 

 

 

После этого перейдем непосредственно к проектированию формы в Visual Studio. В нашем случае используется версия 2015 года.

Для начала создадим форму для вывода информации в разном виде:

 

 

 

На форме размещены объекты button, label, dataGridView и listBox. По нажатию на кнопку «Отобразить» все данные из нашей таблицы должны появиться в объекте dataGridView. Перейдем к коду кнопки.

Для начала укажем пространство имен для работы с базой данных Access. Для этого в самом начале кода пропишем следующую команду:

 

 

После этого переходим в процедуру нажатия кнопки, в которой в первую очередь необходимо создать строку подключения. Для этого создаем строковую переменную «constr» и присваиваем ей следующее значение:

 

string constr = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\HomePC\Desktop\forC#.accdb;";

 

После Data Source = необходимо указать полный путь в базе данных.

После этого создадим экземпляр класса OleDbConnection, который будет отвечать за соединение с базой данных:

 

OleDbConnection connection = new OleDbConnection(constr); 

В качестве параметра конструктора передаем нашу строку подключения «constr».

Теперь необходимо создать переменную, которая будет содержать запрос к базе данных, который вернет все информацию из таблицы TestTable:

 

string quary = "SELECT * FROM TestTable"

Создадим переменную тип OleDataAdapter, которая получит результат запроса, и переменную типа DataTable, в которую будут записаны данные:

 

OleDbDataAdapter adapter = new OleDbDataAdapter(quary, constr);

DataTable dt = new DataTable();

 

В первом случае мы использовали перегрузку конструктора класса OleDbDataAdapter, которая принимает два параметра: строку запроса и строку подключения.

После этого для выполнения запроса к БД нужно открыть соединение:

 

connection.Open();

 

Следующая команда заполнит переменную dt информацией, которую вернет запрос, а затем закроет соединение:

 

adapter.Fill(dt); connection.Close();

 

После этого нам остается только назначить в качестве источника данных для dataGridView наш объект dt:

 

dataGridView1.DataSource = dt;

 

Полный код кнопки представлен ниже:

 

В результате мы получим:

 

 

 

Но на деле не всегда нужно выводить всю информацию из таблиц, и не всегда вывод должен быть осуществлен в компонент dataGridView. Следующий код вернет только список имен из таблицы базы данных и заполнит ими объект listBox:

Обратите внимание, что почти весь код остался без изменений, за исключением выделенного зеленой рамкой. Объект dt типа DataTable представляет собой таблицу, состоящую из строк и столбцов, нумерация начинается с нуля. То есть после заполнения переменной dt данными из запроса, таблица состоит из одного столбца (индекс 0) и множества строк.

Переменная row в данном случае обозначает строки таблицы dt, а чтобы их вывести, необходимо указать номер столбца, содержащего данные. Результат показан на рисунке ниже:

 

 

 

Но что, если нам нужно просмотреть каждую запись таблицы по отдельности? Для демонстрации этого примера добавим в наш проект новую форму.

 

 

 

Затем добавим на первую форму кнопку и запрограммируем ее на открытие формы 2.

 

 

 

 

 

После этого запрограммируем кнопку «Заполнить». Изначально она будет выводить первую запись из таблицы.

Как и в предыдущих примерах основная часть кода остается неизменной, кроме вывода информации в объекты textBox. Так же обратите внимание, что переменную dt мы сделали глобальной. Это нужно для того, чтобы мы могли обращаться к ней из других процедур, а именно кнопок переключения записей. Кроме того, мы добавили глобальную переменную count, в которую записывается количество строк переменной dt. Коды кнопок

«>» и «<» представлены соответственно ниже:

 

 

 

Была добавлена глобальная переменная note, которая хранит номер выведенной записи.

 

 

 

Все предыдущие примеры демонстрируют работу с запросами на выборку. Попробуем теперь внести информацию в базу данных из формы приложения, для этого добавим на форму 2 соответствующие кнопки.

 

 

 

Для кнопки «Добавить» свойству Enabled установим значение false, чтобы случайно на нее не нажать, пока не создастся новая запись. Кнопка

«Новая запись» будет просто отчищать поля для ввода.

 

 

 

Обратите внимание, что для свойства Enabled объекта textBox1 мы установили значение false, чтобы в него невозможно было ничего ввести. Это связанно с тем, что в базе данных поле id имеет тип данных Счетчик и его значение устанавливается автоматически. Поэтому указывать его вручную нельзя.

 

Строка подключения, переменные connection и quary остаются без изменений (за исключением текста запроса), а вот дальше привычный объект класса OleDbDataAdapter отсутствует, а вместо него появился новый объект OldeDbCommand, конструктор которого принимает те же параметры (quary, connection). Для выполнения запроса используется метод ExecuteNonQuery, который не принимает параметры и ничего не возвращает.

Обратите внимание, что операторы выполнения запроса помещены в конструкцию try-catch-finally. Данную конструкцию рекомендуется использовать при выполнении любой операции, связанной с базой данных. Конкретно в данном случае приложение попытается выполнить запрос; если же в ходе выполнения возникнут ошибки, то блок catch выведет сообщение с текстом ошибки. В конце, не зависимо от того, выполнится команда или появится сообщение об ошибке, соединение будет закрыто.

Результат мы сможем увидеть непосредственно на первой форме, заполнив объект dataGridView:

 

 

 

 

 

 

 

 

Создание пользовательского класса для работы с БД Access

 

Как вы заметили, в процедурах, связанных с выполнением запросов, большая часть кода одинаковая. В проектах, где таких процедур в разы больше, целесообразно создать отдельный класс, в котором описать методы для выполнения запросов на выборку и изменение данных, что существенно сократит код. Класс нужно создать в файле Program.

Наш класс будет содержать всего два поля и два метода. Полный код представлен ниже:

 

public class doAccess

        {

            static string constr = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\HomePC\Desktop\forC#.accdb;";

            static OleDbConnection connection = new OleDbConnection(constr); 

            //Запросы на выборку

            public DataTable Select(string query)

            {

                OleDbDataAdapter adapter = new OleDbDataAdapter(query, connection);

                DataTable dt = new DataTable();                 try                 {

                    connection.Open();                     adapter.Fill(dt);

                }

                catch (System.Exception exp)

                {

                    MessageBox.Show(exp.Message);                     connection.Close();                     return null;

                }

 

                connection.Close();                 return dt;

            }

 

            //Запросы на изменение

            public void Change (string query)

            {

                OleDbCommand cmd = new OleDbCommand(query, connection);                 try                 {

                    connection.Open();                     cmd.ExecuteNonQuery();

                }

                catch (System.Exception exp)

                {

                    MessageBox.Show(exp.Message);

                }                 finally                 {

                    connection.Close();

                }

            }

        }

 

 

Благодаря этому классу код первой формы очень сократился:

 

public partial class Form1 : Form

    {

        public Form1()

        {

            InitializeComponent();

        }

        Program.doAccess myDB = new Program.doAccess();

        //Заполнение dataGridView

        private void button1_Click(object sender, EventArgs e)

        {

            dataGridView1.DataSource = myDB.Select("SELECT *

FROM TestTable");

        }

        //Заполнение listBox

        private void button2_Click(object sender, EventArgs e)

        {

            listBox1.Items.Clear();

            foreach (DataRow row in myDB.Select("SELECT

FirstName FROM TestTable").Rows)

            {

                listBox1.Items.Add(row[0].ToString());

            }

        }

        //Открытие второй формы

        private void button3_Click(object sender, EventArgs e)

        {

            Form2 f2 = new Form2();             f2.Show();

        }

    }

 

Здесь мы создали объект нашего класса myDB, с помощью которого обращаемся к методам класса.

А так стал выглядеть код кнопок на заполнение и добавление записей второй формы:

 

public partial class Form2 : Form

    {

        public Form2()

        {

            InitializeComponent();

        }

        //Глобальные переменные

        Program.doAccess myDB = new Program.doAccess();         static DataTable dt = new DataTable();         int count;

        //Заполнение формы начальными данными

        private void button3_Click(object sender, EventArgs e)

        {

            dt = myDB.Select("SELECT * FROM TestTable");             textBox1.Text = dt.Rows[0]["id"].ToString();             textBox2.Text = dt.Rows[0]["FirstName"].ToString();             textBox3.Text = dt.Rows[0]["Status"].ToString();             count = dt.Rows.Count;

            label4.Text = string.Format("Запись: {0}/{1}", note +

1, count);

        }

        //Добавление новой записи

        private void button5_Click(object sender, EventArgs e)

        {

            myDB.Change(string.Format("INSERT into TestTable (FirstName, Status) VALUES ('{0}','{1}')", textBox2.Text, textBox3.Text));

            button5.Enabled = false;             textBox1.Enabled = true;

        }

    }

Просмотрено: 0%
Просмотрено: 0%
Скачать материал
Скачать материал "Использование БД Access в приложении на C#"

Методические разработки к Вашему уроку:

Получите новую специальность за 3 месяца

Портной

Получите профессию

Менеджер по туризму

за 6 месяцев

Пройти курс

Рабочие листы
к вашим урокам

Скачать

Скачать материал

Найдите материал к любому уроку, указав свой предмет (категорию), класс, учебник и тему:

6 668 187 материалов в базе

Скачать материал

Другие материалы

Вам будут интересны эти курсы:

Оставьте свой комментарий

Авторизуйтесь, чтобы задавать вопросы.

  • Скачать материал
    • 04.11.2022 412
    • PDF 351.5 кбайт
    • 10 скачиваний
    • Оцените материал:
  • Настоящий материал опубликован пользователем Мантуленко Сергей Павлович. Инфоурок является информационным посредником и предоставляет пользователям возможность размещать на сайте методические материалы. Всю ответственность за опубликованные материалы, содержащиеся в них сведения, а также за соблюдение авторских прав несут пользователи, загрузившие материал на сайт

    Если Вы считаете, что материал нарушает авторские права либо по каким-то другим причинам должен быть удален с сайта, Вы можете оставить жалобу на материал.

    Удалить материал
  • Автор материала

    Мантуленко Сергей Павлович
    Мантуленко Сергей Павлович
    • На сайте: 2 года и 4 месяца
    • Подписчики: 0
    • Всего просмотров: 8378
    • Всего материалов: 4

Ваша скидка на курсы

40%
Скидка для нового слушателя. Войдите на сайт, чтобы применить скидку к любому курсу
Курсы со скидкой

Курс профессиональной переподготовки

Технолог-калькулятор общественного питания

Технолог-калькулятор общественного питания

500/1000 ч.

Подать заявку О курсе

Курс профессиональной переподготовки

Организация деятельности библиотекаря в профессиональном образовании

Библиотекарь

300/600 ч.

от 7900 руб. от 3650 руб.
Подать заявку О курсе
  • Сейчас обучается 285 человек из 66 регионов
  • Этот курс уже прошли 851 человек

Курс профессиональной переподготовки

Библиотечно-библиографические и информационные знания в педагогическом процессе

Педагог-библиотекарь

300/600 ч.

от 7900 руб. от 3650 руб.
Подать заявку О курсе
  • Сейчас обучается 496 человек из 71 региона
  • Этот курс уже прошли 2 331 человек

Курс повышения квалификации

Специалист в области охраны труда

72/180 ч.

от 1750 руб. от 1050 руб.
Подать заявку О курсе
  • Сейчас обучается 36 человек из 22 регионов
  • Этот курс уже прошли 155 человек

Мини-курс

Нейропсихология в школе: путь к успеху и благополучию детей

6 ч.

780 руб. 390 руб.
Подать заявку О курсе
  • Сейчас обучается 81 человек из 32 регионов
  • Этот курс уже прошли 58 человек

Мини-курс

Продажи и управление клиентским опытом: стратегии и аналитика

10 ч.

1180 руб. 590 руб.
Подать заявку О курсе

Мини-курс

Современные подходы к духовно-нравственному воспитанию дошкольников

6 ч.

780 руб. 390 руб.
Подать заявку О курсе
  • Этот курс уже прошли 13 человек