Kav-soft.ru

ПК Софт
14 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Wpf c и работа с access

WPF Подключение к базе данных MS Access

Всем доброго дня, сегодня в этой статье, я бы хотел рассказать вам о WPF и MS Access, а также их взаимодействии друг с другом. Мало кто знает, но MS Access довольно хорошо дружит с WPF, но для начала думаю стоит рассказать, что из себя представляет то и другое.

Windows Presentation Foundation — один из компонентов ядра .NET Framework, который позволяет разработчикам создавать богатые, различные Windows приложения.

Microsoft Office Access или просто Microsoft Access — реляционная система управления базами данных корпорации Microsoft. Входит в состав пакета Microsoft Office. Имеет широкий спектр функций, включая связанные запросы, связь с внешними таблицами и базами данных.

Microsoft Access 2016

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

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

Создание таблицы в MS Access

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

Результат создания таблицы в MS Access

Внесём одну из записей с которой будем осуществлять работу.

Добавление записи в MS Access

На этом создание базы данных законченно.

Разработка приложения и подключение к БД

Переходим к приложению WPF и у главной формы (MainWindow.xaml.cs) прописываем функцию подключения к базе данных:

Создание функции для работы с MS Access

Важно отметить что весь текст у будет отмечен красным а при подключении будут возникать ошибки. Вся проблема в том, что нужно добавить несколько библиотек, которые позволяют работать с базой данных, для этого, нужно нажать ПКМ по подчёркнутому красной линией элементу и выбрать пункт «Быстрые действия и рефакторинг. », после из предложенных действий выбрать первый вариант который добавляет библиотеку: using System.Data.OleDb;

Подключение библиотек для работы с MS Access

Переменная connection содержит в себе текстовую информацию, а именно: тип подключения, и путь подключения. На этом подключение к MS Access завершено, всё что нужно сделать: вызвать функцию в нужном вам месте и обработать запрос.

Выполнение запросов и обработка информации

Для того что бы работать с базой данных MS Access из приложения WPF необходимо знать четыре основных запроса на языке SQL:

  • SELECT (вывод данных из таблицы);
  • INSERT (вставить данные в таблицу);
  • UPDATE (обновить данные в таблице);
  • DESTROY (удалить данные из таблицы).

Важно помнить, что только SELECT возвращает данные, получить данные из других запросов не возможно.

Для того чтобы сделать запрос SELECT и обработать пришедшие данные, после инициализации компонентов вставляем следующий код:

Результат запроса SELECT

Чтобы вставить новую запись, нужно использовать следующий код:

Результат запроса INSERT

Теперь нужно обновить пароль, изменив «test2» на «qwerty123». Для этого используется всё тот же метод, передающий SQL запрос.

Результат запроса UPDATE

Чтобы осуществить удаление записи из таблицы, используется следующий код:

Результат запроса DELETE

Таким образом можно выполнять запросы к базе данных MS SQL Server.

Так же вы можете использовать MS Access в качестве локальной базы данных, а MS SQL основной. Статьи по подключению и выполнению запросов в MS SQL можно найти на нашем сайте.

BestProg

Подключение базы данных Microsoft Access к приложению в Microsoft Visual Studio

Содержание

Задание

Пусть имеется некоторая база данных, созданная в СУБД Microsoft Access . Файл базы данных имеет имя «db1.mdb«. Путь к файлу базы данных

База данных имеет одну таблицу с именем «Tovar».

Необходимо осуществить подключение базы данных к Windows -приложению на языке C# средствами Microsoft Visual Studio 2010 . Приложение должно быть реализовано как Windows Forms Application .

Читайте так же:
Подчиненная форма access

Выполнение

1. Создание приложения типа Windows Forms Application .

2. Вызов мастера подключения.

Для доступа к файлу базы данных необходимо сделать его подключение к приложению. Это осуществляется путем вызова команды « Add New Data Source… » из меню « Data » (рис. 1) либо кликом на крайней левой кнопке с панели инструментов Data Source .

Рисунок. 1. Вызов мастера подключения к файлу базы данных

3. Выбор типа источника данных.

В результате откроется окно мастера для подключения к источнику данных которое изображено на рис. 2.

Рисунок. 2. Выбор типа подключения из которого приложение будет получать данные

В окне необходимо выбрать один из четырех возможных вариантов подключения к источнику данных. В MS Visual Studio существует четыре типа подключения к источникам данных:

  • Database – подключение к базе данных и выбор объектов базы данных;
  • Service – открывает диалоговое окно Add Service Reference позволяющее создать соединение с сервисом, который возвращает данные для вашей программы;
  • Object – позволяет выбрать объекты нашего приложения, которые в дальнейшем могут быть использованы для создания элементов управления ( controls ) с привязкой к данным;
  • Share Point – позволяет подключиться к сайту SharePoint и выбрать объекты для вашей программы.

В нашем случае выбираем элемент Database и продолжаем нажатием на кнопке Next .

4. Выбор модели подключения к базе данных.

Следующий шаг – выбор модели подключения к базе данных (рис. 3).

Рис. 3. Выбор модели подключения к базе данных

Система предлагает выбор одного из двух вариантов:

  • модели данных на основе набора данных ( Dataset );
  • модели данных Entity , что означает, что система может сгенерировать модель данных из базы данных которой могут выступать сервера баз данных Microsoft SQL Server , Microsoftt SQL Server Compact 3.5 или Microsoft SQL Server Database File , либо создать пустую модель как отправную точку для визуального проектирования концептуальной модели с помощью панели инструментов.

В нашем случае выбираем тип модели данных DataSet .

5. Задание соединения с БД.

Следующим шагом мастера (рис. 4) есть выбор соединения данных которое должно использоваться приложением для соединения с базой данных.

Рис. 4. Выбор соединения с базой данных

Для создания нового соединения необходимо выбрать кнопку « New Connection… «. В результате откроется окно « Add Connection » (рис. 5) в котором нужно добавить новое соединение Microsoft Access и выбрать маршрут к файлу базы данных.

В нашем случае поле « Data source » уже содержит нужный нам тип соединения « Microsoft Access Database File (OLE DB) «.

Рис. 5. Добавление нового соединения и выбор файла базы данных

Если нужно выбрать другую базу данных, то для этого используется кнопка « Change… «, которая открывает окно, изображенное на рисунке 6.

Рис. 6. Смена источника данных

В окне на рисунке 6 системой Microsoft Visual Studio будет предложено следующие виды источников данных:

  • Microsoft Access Database File – база данных Microsoft Access ;
  • Microsoft ODBC Data Source – доступ к базе данных с помощью программного интерфейса ODBC ( Open Database Connectivity );
  • Microsoft SQL Server ;
  • Microsoft SQL Server Compact 3.5 ;
  • Microsoft SQL Server Database File ;
  • Oracle Database – база данных Oracle .

Нажимаем кнопку « Browse… » и в открывшемся окне (рис. 7) « Add Connection » выбираем маршрут к файлу базы данных « db1.mdb «. Целесообразно размещать файл базы данных в каталоге содержащим исполняемый модуль приложения.

Для проверки правильности установленного соединения можно воспользоваться кнопкой « Test Connection «.

Рисунок 7. Окно « Add Connection » с выбранной базой данных « db1.mdb «

Читайте так же:
Ms access web

После нажатия на кнопке ОК система сгенерирует строку « Connection string » (рис. 8) который в дальнейшем будет использован для программного подключения к базе данных.

Кликаем на « Next » для продолжения работы мастера.

Рис. 8. Строка Connection string

После выбора Next система выдаст информационное окно следующего вида (рис. 9). Если выбрать «Да», то файл базы данных « db1.mdb » будет копироваться в выходной каталог приложения каждый раз при его запуске в среде MS Visual Studio . Как правило, это каталог, содержащий основные модули приложения. В нашем случае каталог

В этом каталоге размещаются все основные исходные модули проекта, например Program.cs (модуль, содержащий основную функцию WinMain() ) , Form1.cs (содержит исходный код обработки главной формы приложения) и другие.

Рисунок 9. Окно добавления файла базы данных в проект

6. Формирование конфигурационного файла приложения.

После выбора кнопки « Next » мастера откроется следующее окно, в котором предлагается сохранить строку соединения в конфигурационный файл приложения (рис. 10).

Рисунок 10. Предложение записи строки подключения к базе данных в конфигурационный файл приложения

Ничего не изменяем, оставляем все как есть (кликаем на Next ).

7. Выбор объектов базы данных для использования в программе

Последнее окно мастера (рисунок 11) предлагает выбрать список объектов (таблиц, запросов, макросов, форм и т.д.), которые будут использоваться в наборе данных. Как правило выбираем все таблицы базы данных. В нашем примере база данных содержит всего одну таблицу с именем Tovar .

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

После выбора кнопки « Finish » заканчиваем работу с мастером подключения. Теперь база данных подключена к приложению и будет автоматически подключаться при его запуске или при его проектировании в MS Visual Studio .

8. Что же изменилось в программе после выполнения мастера?

Если выбрать панель Data Source (рисунок 12), то можно увидеть, как подключен набор данных с именем db1Dataset в котором есть таблица с именем Tovar .

Рисунок 12. Окно DataSources содержит подключение к базе данных

Точно также можно увидеть изменентия в панели Server Explorer (рисунок 13), где появилась база данных « db1.mdb » с таблицей Tovar и ее полями. Приложение может подключать не только одну, но и несколько баз данных.

Рис. 13. Окно приложения с изменениями в панели Server Explorer

9. Подключение методов оперирования базой данных.

Для того, чтобы использовать методы, которые будут работать с базой данных MS Access (и не только MS Access ), необходимо подключить пространство имен System.Data.OleDb .

Для этого в основной форме ( Form1.cs ) в Solution Explorer выбираем режим просмотра кода (View Code) из контекстного меню (рис. 14) и вначале файла добавляем следующую строку:

Рисунок 14. Вызов программного кода главной формы приложения ( Form1.cs ) с помощью Solution Explorer

Общий вид верхней части файла Form1.cs будет следующим:

На этом этапе подключение к базе данных db1.mdb выполнено. Дальнейшими шагами есть создание программного кода для оперирования данными в базе данных.

Привязка WPF к таблице данных ADO.NET

Вкладка Page2. Привязка к таблице Employees через коллекцию объектов

В данном примере задачу вкладки Page1 мы повторим несколько другим способом. Предварительную загрузку данных из хранилища мы поместим не в объект DataTable , а сразу в библиотечную коллекцию List объектов промежуточного класса. И уже к этой коллекции будем привязывать пользовательский интерфейс. Для разнообразия, при заполнении объектов данных коллекции используем ADO.NET -класс OleDbDataReader, поскольку отображаемые данные пока будем только просматривать.

Коллекция объектов-данных List будет служить тонкой оболочкой над извлеченными данными БД и существовать самостоятельно. В нее поместим данные, которые сразу явно преобразуем к нужному типу. Для отображения коллекций данных к ним можно привязывать списковые интерфейсные элементы WPF типа ListBox, ComboBox, ListView, а также элементы для отображения иерархических данных типа Menu, TreeView и др. Такие интерфейсные элементы порождены классом ItemsControl и их еще называют элементами управления элементами

Читайте так же:
Объект recordset не является обновляемым access

Соответственно, в качестве коллекций, привязываемых к перечисленным элементам управления элементами WPF, можно использовать неотображаемые объекты, наследующие интерфейс System.Collections. ICollection (например, List , ObservableCollection , ArrayList , Array — массив), которые к инфраструктуре WPF могут и не относиться.

В отличие от элементов управления элементами существуют элементы, способные отображать только один объект, например TextBlock или TextBox . Их еще называют элементами управления содержимым (нечем управлять кроме единственного объекта внутри себя).

Как и ранее, вначале создадим ‘объект-тонкую оболочку’ над извлеченными данными хранилища, общедоступные свойства которого будем привязывать к визуальным элементам пользовательского интерфейса. Поля и приватные свойства класса-оболочки в привязке участвовать не могут. Подход с применение промежуточного класса-оболочки хорош тем, что увеличивает контроль программиста над ‘сырыми’ данными хранилища. В этом классе мы можем заранее привести данные к нужному типу, скомпоновать и переобъявить их требуемым образом, отсортировать, отфильтровать, сделать какие-то проверки и т.д. Одним словом, — провести предварительную инспекцию и обработку с полным контролем.

Следует заметить, что WPF, как и Windows Forms, тоже способна непосредственно привязывать интерфейсные элементы к извлеченным наборам данных DataTable и DataSet инфраструктуры ADO.NET, без всяких там классов-посредников. В этом мы убедимся чуть позднее, а пока так.

  • В панели Solution Explorer выделите узел Code и командой Add/Class добавьте в него файл Employee.cs с одноименным классом для хранения приведенных данных, который заполните так

Класс Employee будет служить тонкой оболочкой для загруженных из хранилища данных. Каждый экземпляр этого класса будет хранить типизированные данные одной считанной из хранилища записи. Конструктор по умолчанию создавать не стали для разнообразия, чтобы подчеркнуть, что использовать будем только параметризованный конструктор.

  • В файле StoreNorthwindDB.cs добавьте в класс StoreNorthwindDB метод с именем ReadTableEmployees() для заполнения библиотечной коллекции объектов типизированных данных

Метод ExecuteReader() устанавливает связь с нужной таблицей предварительно открытого соединения с БД в соответствии с настройками SQL -запроса и курсор данных таблицы вначале установлен на первую запись. Метод Read() считывает текущую запись таблицы и перемещает курсор на следующую запись. Цикл чтения записей таблицы продолжается до тех пор, пока курсор данных не установится за последней записью. Тогда метод Read() возвратит false и цикл чтения данных прервется. Пока данные считываются построчно, соединение с БД должно быть открытым. В отличие от метода OleDbDataAdapter.Fill() , соединение с БД при применении класса OleDbDataReader приходится открывать и закрывать вручную. За этим нужно строго следить, иначе данные для других пользователей останутся блокированными.

  • Добавьте в контейнер TabControl новую вкладку с именем Page2 с привязками интерфейсных элементов к общедоступным свойствам объекта данных Employee

В выражениях привязки свойства Text элементов TextBox опущено указание источника данных, поэтому WPF будет искать его в свойстве DataContext ближайших родительских элементов. В процедурном коде мы определим источник в свойстве DataContext для элемента gridEmployees2 .

  • Добавьте в класс Window1 файла Window1.xaml.cs следующий блок кода, управляющий привязкой интерфейсных элементов вкладки Page2

Здесь мы опять для удобства сгруппировали код в секцию #region. Обработчик события SelectionChanged меняет значение свойства DataContext сетки при выделении элементов списка. Тем самым будет меняться источник, к которому в разметке привязаны элементы TextBox, и соответственно будут меняться значения свойств Text, показывая новые данные.

Читайте так же:
Select distinct access

Wpf c и работа с access

БлогNot. Visual С++ в Studio Expess: подключаемся к файлу Access

Visual С++ в Studio Expess: подключаемся к файлу Access

Visual Studio, как и другие современные среды программирования, поддерживает работу с базой данных (БД) по технологии ADO (то есть, с формированием Connection String), поддерживаются как MS SQL, так и Access. Информация из БД кэшируется в DataSet, который обеспечивает приложение данными.

Работа с системными источниками данных поддерживается только в «полных» версиях Visual Studio, но не Express. В этой статье мы рассмотрим лишь работу с СУБД Access, предполагая, что на компьютере установлен Microsoft Office версий XP/2003 или выше. По поводу подключения к «обычным» SQL’евским базам могу, например, посоветовать главу 12 из книги Б. Пахомова «С, С++ и MS Visual C++ 2010 для начинающих».

Сначала нужно подготовить и сохранить в папке проекта (если создано решение с одним проектом и оно называется bd1 , то папка будет bd1/bd1 ) тестовый файл Access:

  • имя файла = db1.mdb (на всякий случай, сохранил совместимым с версиями XP/2003);
  • имя таблицы = Table1 ;
  • в таблице три поля с типам Счетчик (имя Id ), Текст (имя Name ), Числовой (имя Number ).

Добавить в Studio отключённые по умолчанию компоненты: правая кнопка на Панели элементов, команда Выбрать элементы. , вкладка Компоненты .NET Framework, добавить OleDbConnection , OleDbDataAdapter (появятся в группе «Данные» панели элементов). Если у вас версия Express, которая часто грешит «глюками» с отображением списка компонентов, попробуйте сбросить панель элементов в исходное состояние (тоже правой кнопкой мыши) и повторить операцию.

Перенести компонент OleDbDataAdapter на форму, появится мастер подключения, показать на заранее подготовленный файл Access, при запросе строки SQL ввели

Проверить, что на форме создалось OleDbConnection .

В норме OleDbDataAdapter должен создать команды для действий SELECT, INSERT, UPDATE и DELETE. Но, возможно, в зависимости от версии офиса, придётся дополнительно настраивать свойства oleDbDataAdapter1 — SelectCommand — CommandText и oleDbDataAdapter1 — UpdateCommand — CommandText.

Это можно сделать как в диспетчере свойств, например, написав в свойстве oleDbDataAdapter1 — SelectCommand — CommandText:

так и программно (настраиваем UpdateCommand):

Возможно (как альтернатива) настроить все команды «автоматически», для этого щелкните по стрелочке в правом верхнем углу значка oleDbDataAdapter1 и выберите «Настроить адаптер данных». Помешать автонастройке может отсутствие запущенного сервера SQL.

Все остальные компоненты тоже «лежат» в списке «Данные»:

  • Добавить DataGridView, DataSet — для обеспечения подключения.
  • Добавить BingingNavigator — для навигации по БД.
  • Добавить BingingSource — для связи источника данных с навигатором.

В свойствах DataSet выбрать свойство Tables, добавить одну таблицу Table1, в окне Редактор коллекции столбцов (вызывать из свойства Columns) добавить 3 столбца с именами как в файле Access (Id, Name, Number). Для каждого столбца указать свойства:

  • ColumnName — имя столбца из Access,
  • DataType — тип данных из Access (счетчик как Int32)

В свойствах bingingSource1 указать DataSource = dataSet1, DataMember = Table1

Для bindingNavigator указать bindingSource = bindingSource1

Для dataGridView указать DataSource = bindingSource1 (неправильно DataSource=dataSet1, DataMember=Table1, как я видел в инете)

Для oleDbDataAdapter1 проверить свойство SelectCommand — Connection = oleDbConnection1

По некоторому событию (например, по загрузке формы Load ) получим данные из таблицы БД:

Перед закрытием формы (событие FormClosing ) сохраним изменения в таблице Access:

Можно всё делать и программно, а не тыкать свойства. Вот пример кода с программным коннектом к базе данных Access.

Скачать проект-пример Visual C++ в архиве .zip (26 Кб)

28.03.2015, 13:54; рейтинг: 13608

Привязка данных из базы

»» В ДАННОЙ СТАТЬЕ ИСПОЛЬЗУЕТСЯ ИСХОДНЫЙ КОД ДЛЯ ПРИМЕРОВ

Запрос из базы данных

Рассмотрим простое окно, показанное на рисунке ниже. Оно позволяет пользователю указывать код машины, после чего отображает соответствующую информацию о машине в контейнере Grid (в нижней части окна):

Читайте так же:
Exchange web access

Во время проектирования этого окна нет доступа к объекту CarTable, который поставит данные во время выполнения. Тем не менее, создавать привязки можно и без указания источника данных. Необходимо просто указать свойство класса CarTable, которое будет использовать каждый элемент.

Ниже приведен код разметки для отображения объекта CarTable:

Обратите внимание, что контейнер Grid, служащий оболочкой для всех этих деталей, имеет имя, так что им можно манипулировать в коде и завершить привязку данных.

При первом запуске приложения никакая информация не отображается. Даже если определить необходимые привязки, никакого объекта источника не доступно. Когда пользователь щелкает на кнопке во время выполнения, извлекаются данные о соответствующей модели машины. Хотя каждую привязку можно создать программно, это не имеет особого смысла (и не сэкономит много кода по сравнению с заполнением элементов управления вручную).

Однако свойство DataContext предлагает блестящую альтернативу. Если установить его для контейнера Grid, содержащего все выражения привязки данных, то все выражения будут использовать его для заполнения себя данными.

Ниже приведен код обработки событий щелчка на кнопке пользователем:

Текущий класс CarTable предполагает получение полного комплекта данных о машине. Однако таблицы базы данных часто включают поля, допускающие значения null, которые указывают на отсутствующую или неприменимую информацию. Это отражается в классах данных с помощью допускающих null типов данных для простых числовых значений или дат. Например, в сущностном классе CarTable можно использовать int? вместо int. Естественно, ссылочные типы, такие как строки и полноценные объекты, всегда поддерживают значения null.

Результат привязки значения null предсказуем — целевой элемент вообще ничего не отображает. Для числовых полей это поведение полезно, поскольку позволяет отличать отсутствующее значение (когда элемент не показывает ничего) от нулевого значения (когда показывается текст 0). Тем не менее, следует отметить, что есть возможность изменить способ отображения WPF значений null, устанавливая свойство TargetNullValue в выражении привязки. Если сделать это, то вместо null будет отображаться указанное значение. Вот пример отображения текста [Описание не предоставлено], когда свойство CarTable.Decription равно null:

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

Обновление базы данных

Для того чтобы включить обновления базы данных в этом примере, дополнительно ничего делать не понадобится. Свойство TextBox.Text использует двустороннюю привязку по умолчанию. В результате объект CarTable модифицируется в случае редактирования содержимого текстовых полей. (Формально каждое свойство обновляется при переходе на новое поле, поскольку в качестве режима обновления источника по умолчанию для свойства TextBox.Text установлен LostFocus.)

Зафиксировать изменения в базе данных можно в любой момент. Все, что для этого понадобится — добавление метода обновления в обработчик события клика кнопки Обновить. При щелчке на ней код может получить текущий объект CarTable из контекста данных и воспользоваться им для фиксации обновления. Давайте добавим эту кнопку, видоизменив часть разметки:

С этим примером связана одна потенциальная загвоздка. После щелчка на кнопке Обновить фокус переходит к этой кнопке и все незафиксированные изменения в текстовых полях применяются к объекту CarTable. Однако если сделать кнопку Обновить кнопкой по умолчанию (установив свойство IsDefault в true), появится другая возможность. Пользователь сможет внести изменения в одно из полей и нажать клавишу , чтобы запустить процесс обновления без фиксации последнего изменения. Во избежание такой ситуации необходимо явно передать фокус, прежде чем выполнять любой код базы данных:

голоса
Рейтинг статьи
Ссылка на основную публикацию
Adblock
detector