Datagrid как подключить бд
Перейти к содержимому

Datagrid как подключить бд

Пошаговое руководство. Отображение данных из базы данных SQL Server в элементе управления DataGrid

В этом пошаговом руководстве выполняется получение данных из базы данных SQL Server и их отображение в элементе управления DataGrid. С помощью ADO.NET Entity Framework можно создавать классы сущностей, представляющих данные, и использовать LINQ для записи запроса, который выполняет получение указанных данных из класса сущности.

Предварительные требования

Для выполнения этого пошагового руководства требуются следующие компоненты:

Доступ к запущенному экземпляру SQL Server или SQL Server Express с подключенной учебной базой данных AdventureWorks. Базу данных AdventureWorks можно загрузить из GitHub.

Создание новых классов сущностей

Создайте проект приложения WPF на Visual Basic или C# с именем DataGridSQLExample .

В обозревателе решений щелкните проект правой кнопкой мыши, выберите сначала Добавить, а затем Новый элемент.

Откроется диалоговое окно Добавить новый элемент.

В области «Установленные шаблоны» выберите Данные и в списке шаблонов выберите ADO.NET EDM (модель данных с использованием сущностей).

ADO.NET Entity Data Model item template

Назовите файл AdventureWorksModel.edmx , а затем щелкните Добавить.

Появится мастер модели EDM.

На экране «Выбор содержимого модели» выберите Конструктор EF из базы данных, а затем нажмите кнопку Далее.

На экране «Выбор подключения к данным» укажите подключение к базе данных AdventureWorksLT2008. Дополнительные сведения см. в статье Диалоговое окно «Выбор подключения к данным».

Проверьте, чтобы имя было AdventureWorksLT2008Entities и чтобы был установлен флажок у параметра Сохранить параметры соединения сущности в App.Config как:, после чего нажмите Далее.

На экране «Выбор объектов базы данных» разверните узел «Таблицы» и выберите таблицы Product и ProductCategory.

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

Select Product and ProductCategory from tables

Нажмите кнопку Готово.

Сущности Product и ProductCategory отображаются в конструкторе сущностей.

Product and ProductCategory entity models

Получение и представление данных

Откройте файл MainWindow.xaml.

Задайте для свойства Width элемента Window значение 450.

В редакторе XAML добавьте следующий тег DataGrid между тегами <Grid> и </Grid> , чтобы добавить элемент DataGrid с именем dataGrid1 .

Window with DataGrid

С помощью меню свойств окна или редактора XAML создайте для элемента Window с именем Window_Loaded обработчик событий для события Loaded. Дополнительные сведения см. в разделе Практическое руководство. Создание простого обработчика событий.

Ниже показан код XAML для файла MainWindow.xaml.

Если используется Visual Basic, в первой строке MainWindow.xaml замените x:Class="DataGridSQLExample.MainWindow" на x:Class="MainWindow" .

Откройте файл кода программной части (MainWindow.xaml.vb или MainWindow.xaml.cs) для элемента Window.

Добавьте следующий код, чтобы получать только определенные значения из объединенных таблиц, и назначьте свойство ItemsSource элемента DataGridдля результатов запроса.

Datagrid как подключить бд

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

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

Для определения всех подключений в программе в пределах узла <configuration> добавляется новый узел <connectionStrings> . В этом узле определяются строки подключения с помощью элемента <add> . Каждая строка подключения имеет название, определяемое с помощью атрибута name . В данном случае строка подключения называется «DefaultConnection». Название может быть произвольное.

Атрибут connectionString собственно хранит строку подключения. Он состоит из трех частей:

Data Source=.\SQLEXPRESS : указывает на название сервера. По умолчанию для MS SQL Server Express используется «.\SQLEXPRESS»

Initial Catalog=mobiledb : название базы данных. Так как база данных называется mobiledb, то соответственно здесь данное название и указываем

Integrated Security=True : задает режим аутентификации

Так как мы будем подключаться к базе данных MS SQL Server, то соответственно мы будем использовать провайдер для SQL Server, функциональность которого заключена в пространстве имен System.Data.SqlClient.

Далее определим код графического интерфейса в xaml:

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

Теперь определим код подключения и все обработчики кнопок в файле кода c#:

Вся работа с бд производится стандартными средствами ADO.NET и прежде всего классом SqlDataAdapter. Вначале мы получаем в конструкторе строку подключения, которая определена выше в файле app.config:

Чтобы задействовать эту функциональность, нам надо добавить в проект библиотеку System.Configuration.dll .

Далее в обработчике загрузки окна Window_Loaded создаем объект SqlDataAdapter:

В качестве команды для добавления объекта устанавливаем ссылку на хранимую процедуру:

Получаем данные из БД и осуществляем привязку:

За обновление отвечает метод UpdateDB() :

Чтобы обновить данные через SqlDataAdapter, нам нужна команда обновления, которую можно получить с помощью объекта SqlCommandBuilder. Для самого обновления вызывается метод adapter.Update() .

Причем не важно, что мы делаем в программе — добавляем, редактируем или удаляем строки. Метод adapter.Update сделает все необходимые действия. Дело в том, что при загрузке данных в объект DataTable система отслеживает состояние загруженных строк. В методе adapter.Update() состояние строк используется для генерации нужных выражений языка SQL, чтобы выполнить обновление базы данных. Более подробно про обновление с помощью адаптеров данных можно почитать здесь: Обновление БД из DataSet вручную

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

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

Причем важно отметить действие хранимой процедуры — при добавлении нового объекта данные уходят на сервер, и процедура возвращает нам id добавленной записи. Этот id играет большую роль при генерации нужного sql-выражения, если мы захотим эту запись изменить или удалить. И если бы не хранимая процедура, то нам пришлось бы после добавления данных загружать заново всю таблицу в datagrid, только чтобы у новой добавленной записи был в datagrid id. И хранимая процедура избавляет нас от этой работы.

Также здесь мы могли бы выполнять обновление данных сразу после редактирования строки. Для этого нужно задействовать событие RowEditEnding элемента DataGrid:

И если после окончания редактирования мы нажмем на Enter, то срабатает обработчик события RowEditEnding, который обновит базу данных.

Итак, здесь рассмотрен простейший способ работы с базой данных в WPF. Далее мы рассмотрим еще один способ, который подразумевает применение технологии Entity Framework.

Database connection

To issue a query to a database, you must create a data source connection. Data source is the location of your data and can be a server or a DDL file. The data source includes a name and connection settings that are dependent on the data source type. In DataGrip, you can manage these connections in the Data Sources and Drivers dialog ( File | Data Sources ).

The following video is a general instruction on adding a data source. For illustrative purposes, the video shows how to add a PostgreSQL data source.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *