ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 02.12.2023
Просмотров: 130
Скачиваний: 3
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
https://vscode.ru/prog-lessons/ms-access-i-c-sharp-rabotaem-s-bd.htmlhttps://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 веток ответов
// Читаем первую (в нашем случае - и единственную) строку ответа базы данных с помощью метода Read() объекта OleDbDataReadermyOleDbDataReader.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"); // заполняем наш датасет данными из запроса
В 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»:Полезные свойства для изменения столбцов:
-
Автор
-
-
18.09.2019 в 08:42#5869
-
// Читаем первую (в нашем случае - и единственную) строку ответа базы данных с помощью метода Read() объекта OleDbDataReadermyOleDbDataReader.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"); // заполняем наш датасет данными из запроса
-
Автор
-
Для ответа в этой теме необходимо авторизоваться.
-
Главная -
Новости -
Рубрики -
О проекте -
Авторы -
Полезно знать -
Фотогалерея -
Рекомендуем -
Контакты
В 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 – можно ли изменять ширину столбца.