Файл: Работа с базой данной ms access в C#.docx

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 02.12.2023

Просмотров: 22

Скачиваний: 3

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

https://vscode.ru/prog-lessons/ms-access-i-c-sharp-rabotaem-s-bd.html

https://www.bestprog.net/ru/2015/12/21/003-подключение-к-базе-данных-microsoft-access/

https://www.nookery.ru/sample-application-for-working-with-ms-access-database-in-c-windows-form/

Работа с базой данной MS Access в C#

Прикладное программирование › Программирование на C# › Работа с базой данной MS Access в C#

Помечено: csharp, MS Access, базы данных

Просмотр 0 веток ответов

  • Автор

Сообщения



    • 18.09.2019 в 08:42#5869

@admin

Подключение к БД. Извлечение данных

Для соединения с базой данных MS Access (файл .mdb) в C# следует использовать класс OleDbConnection со следующими параметрами соединения:

provider=Microsoft.Jet.OLEDB.4.0;data source=databaseFile

Здесь 

databaseFile

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

Microsoft.Jet.OLEDB.4.0

.

Пример параметров соединения с файлом базы данных Microsoft Access:

string connectionString =

"provider=Microsoft.Jet.OLEDB.4.0;" +

"data source=C:\data\dbase.mdb";

Бэкслеши в пути файла следует заэскейпить (именно поэтому в примере вместо одного бекслеша поставлено по два).

Вышеупомянутую строку параметров соединения следует передать конструктору:

OleDbConnection myOleDbConnection = new OleDbConnection(connectionString);

Ниже приведен листинг программы, которая подключается к базе данных клиентов в формате MS Access и выводит информацию по первому клиенту. Для отправки SQL-запросов и чтения их результатов здеь используются объекты 

OleDbCommand

 и 

OleDbDataReader

.

using System;

using System.Data;

using System.Data.OleDb;

class OleDbConnectionAccess {

public static void Main() {

// Формируем строку с параметрами подключения к файлу базы данных

string connectionString =

"provider=Microsoft.Jet.OLEDB.4.0;" +

"data source=C:\data\dbase.mdb";

// создаем объект OleDbConnection для соединения с Бд и передаем его конструктору строку с параметрами подключения

OleDbConnection myOleDbConnection = new OleDbConnection(connectionString);

// создаем объект OleDbCommand

OleDbCommand myOleDbCommand = myOleDbConnection.CreateCommand();

// задаем SQL-запрос к базе данных в свойстве CommandText объекта OleDbCommand

// Результатом запроса должны быть данные клинета с именем Кто-то

myOleDbCommand.CommandText =

"SELECT CompanyName, ContactName, Address " +

"FROM Clients " +

"WHERE ContactName = 'Кто-то'";

// открываем соединение с БД с помощью метода Open() объекта OleDbConnection

myOleDbConnection.Open();

// создаем объект OleDbDataReader и вызываем метод ExecuteReader() для выполнения введенного SQL-запроса

OleDbDataReader myOleDbDataReader = myOleDbCommand.ExecuteReader();


// Читаем первую (в нашем случае - и единственную) строку ответа базы данных с помощью метода Read() объекта OleDbDataReader

myOleDbDataReader.Read();

// отображаем результат запроса

Console.WriteLine("myOleDbDataReader["

CompanyName "] = " +

myOleDbDataReader["CompanyName"]);

Console.WriteLine("myOleDbDataReader["

ContactName "] = " +

myOleDbDataReader["ContactName"]);

Console.WriteLine("myOleDbDataReader["

Address "] = " +

myOleDbDataReader["Address"]);

// закрываем OleDbDataReader методом Close()

myOleDbDataReader.Close();

// закрываем соединение с БД

myOleDbConnection.Close();

}

}

Результатом работы программы будет следующий текст:

myOleDbDataReader[«CompanyName»] = Кто-то и Компания
myOleDbDataReader[«ContactName»] = Кто-то
myOleDbDataReader[«Address»] = Улица Какая-то, д.12

Добавление, изменение и удаление данных в БД

Для чтения данных из БД MS Access используется класс 

OleDbDataReader

. Но для выполнения запросов на вставку, изменение, или удаление данных из базы данных следует использовать метод класса 

OleDbCommand ExecuteNonQuery ()

. Его вызов выполняет указанный в свойстве 

CommandText

 класса 

OleDbCommand

 запроc и возвращает 

int

-число затронутых запосом полей.

OleDbConnection conn = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0; Data Source=data.mdb")

conn.Open();

OleDbCommand cmd = new OleDbCommand();

cmd.CommandText = "NSERT INTO myTable VALUES (1,2,3)";

int rowsAffected = cmd.ExecuteNonQuery();

System.Windows.Forms.MessageBox.Show(rowsAffected.ToString());

В данном случае 

rowsAffected

 будет равняться единице.

Во время 

INSERT

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

OleDbCommand cmd = new OleDbCommand("INSERT INTO MyTable (columns) VALUES (@param)",conn);

cmd.Parameters.Add("@param","abc[[''[]''kl'm");

cmd.ExecuteNonQuery();

Однако во взаимодействии C# и СУБД Microsoft Access есть одна очень неприятная загвоздка: при каких-либо ошибках в синтаксисе, или структуре SQL-запроса, программа падает в OS Loader Lock, и не дает никакой информации о произошедшей ошибке.
Чтобы этого избежать и получить довольно исчерпывающую информацию о произошедшей ошибке, следует выполнять запросы в 

try-catch

 блоках:

OleDbCommand cmd = dbconnection.CreateCommand();

cmd.CommandText = "DELETE FROM myTable WHERE (data='" + textbox1.Text + "')";

conn.Open();

try

{

int rowsAffected = cmd.ExecuteNonQuery();

System.Windows.Forms.MessageBox.Show(rowsAffected.ToString());

}

catch (Exception ex)

{

System.Windows.Forms.MessageBox.Show(ex.Message);

}

conn.Close();

Работа через DataSet и DataTable

При работе через 

DataSet

 и 


DataTable

 все аналогично за исклением того, что вместо 

OleDbCommand

 используется 

OleDbDataAdapter

:

OleDbConnection conn = new OleDbConnection (@"Provider=Microsoft.Jet.OLEDB.4.0; Data Source=data.mdb");

OleDbDataAdapter myDataAdapter = new System.Data.OleDb.OleDbDataAdapter («SELECT * FROM table»,conn); // Создаем новый OleDbDataAdapterи передаем в его конструктор запрос и источник данных

DataSet myDataSet = new DataSet («Table»); // Создаем новый DataSet с таблицей «Table»

myDataAdapter.Fill (myDataSet,"Table"); // заполняем наш датасет данными из запроса

  • Автор

Сообщения

Просмотр 0 веток ответов

  • Для ответа в этой теме необходимо авторизоваться.

Перейти к содержимому



Начало формы

SEARCH

Конец формы

  • Главная

  • Новости

  • Рубрики

  • О проекте

  • Авторы

  • Полезно знать

  • Фотогалерея

  • Рекомендуем

  • Контакты



















Работа с базой данных в C#





witrec.com

РЕКЛАМА

Как найти классных программистов в России





lady-xl.ru

РЕКЛАМА

Платья больших размеров: от 50 до 76!

В данной статье мы подробно поговорим о разработке небольшого приложения с помощью Visual Studio базы данных и языка C#. Советуем поэтапно выполнять все инструкции из данной статьи и у Вас получиться разработать свое приложение.

1. Создание базы данных

В качестве СУБД выберем программу Microsoft Access. Но вы можете использовать и другую базу данных.

Создаем базу данных в Microsoft Access и называем её «test». В этой базе данных создаем таблицу «contacts»:




Заполните базу данных данными:




Базу данных вы можете и другую создать и данные в ней можете другие добавить т.к. это не принципиально, но мы будем работать с данной таблицей.

2. Создание проекта


В Visual Studio создаём проект:




После создания проекта добавляем на форму компонент «DataGridView» (компоненты находятся слева в «Панели элементов»). Открываем область «Задачи»:




Открываем список «Выберите источник данных» и нажимаем на ссылку «Добавить источник данных проекта»:




Откроется «Мастер настройки источника данных». В качестве источника выбираем «База данных» и идем далее:




В следующем окне идем далее:




В окне «Выбор подключения к базе данных» нажимаем на «Создать подключение»:




В окне «Выбора источника» выбираем «Другое» и поставщик данных ставим «Поставщик данных .NET Framework для OLE DB»:




В следующем окне «Добавить подключение» выбираем в «Поставщик OLE DB» Microsoft Office 16.0 Access Database. В «Имя сервера или файла» вписываем путь к нашему файлу базы данных Access (который создали в первом пункте). Проверяем подключение и жмем «ОК»:




Update 2021: Visual Studio 2019 требует файл Access старого формата (.mdb – это старый формат баз данных Access 2002-2003):




В следующем окне идем далее:




Выйдет окно для переноса файла базы данных в Ваш проект нажимаем «Да»:




В следующем окне ничего не меняем и идем далее:




В следующем окне выбираем нашу таблицу «contacts» и жмем «Готово»:




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




Если запустить наш проект, то можно увидать данные из нашей базы данных:




Поменяйте ширину всех столбцов на «150» чтобы столбцы вместились во все окно:





Вот так без единой строчки кода мы вывели данные из нашей таблицы на нужную нам форму. Переходим к 3 пункту.

3. Сохранение данных

Базу данных мы видим, но редактировать её невозможно и именно поэтому нам нужна кнопка «Сохранить». Добавляем на форму кнопку и в свойствах меняем имя на «SaveButton». После добавления кнопки нажимаем на нее два раза и пишем код:

private void SaveButton_Click(object sender, EventArgs e)

{

contactsTableAdapter.Update(testDataSet);

}

Вышеуказанный код обновляет запись в нашей таблице «contacts»TableAdapter использует команды данных для чтения и записи в базу данных. В «testDataSet» хранятся настройки подключения базы данных.

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

4. Изменение заголовков столбцов таблицы

Изменим текст столбцов и скроем столбец «img»:




Полезные свойства для изменения столбцов:

  • HeaderText – задает название столбца.

  • Visible – скрывает заголовок или наоборот.

  • Width – ширина столбца.

  • Resizable – можно ли изменять ширину столбца.

После того как скроете заголовок «img» измените ширину всех остальных заголовков:




5. Защита от случайного удаления

Чтобы пользователь случайно не удалил запись в нашей базе данных нужно сделать так чтобы перед удалением приложение спрашивало об удалении записи.

Для этого перейдем к компоненту DataGridView, откроем список событий и установим обработчик для события UserDeletingRow. Нажмите два раза на пустую строчку возле события и перейдете к коду. Вписываем код:

private void dataGridView1_UserDeletingRow(object sender, DataGridViewRowCancelEventArgs e)

{

DialogResult dr = MessageBox.Show("Удалить запись?", "Удаление", MessageBoxButtons.OKCancel, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button2);

if (dr == DialogResult.Cancel)

{

e.Cancel = true;

}

}

После этого проверим работоспособность данного кода. Запустим приложение и попробуем удалить запись. Должно быть вот так:




Как только пользователь выделит строчку и нажмет кнопку «Delete» сработает наше событие «dataGridView1_UserDeletingRow» и выскочить окно с вопросом об удалении. Вот скриншот где находятся события выбранного компонента: