Как связать datagridview с базой данных

Обновлено: 23.04.2024

The DataGridView control supports the standard Windows Forms data binding model, so it can bind to a variety of data sources. Usually, you bind to a BindingSource that manages the interaction with the data source. The BindingSource can be any Windows Forms data source, which gives you great flexibility when choosing or modifying your data's location. For more information about data sources the DataGridView control supports, see the DataGridView control overview.

Visual Studio has extensive support for data binding to the DataGridView control. For more information, see How to: Bind data to the Windows Forms DataGridView control using the Designer.

To connect a DataGridView control to data:

Implement a method to handle the details of retrieving the data. The following code example implements a GetData method that initializes a SqlDataAdapter, and uses it to populate a DataTable. It then binds the DataTable to the BindingSource.

In the form's Load event handler, bind the DataGridView control to the BindingSource, and call the GetData method to retrieve the data.

Example

This complete code example retrieves data from a database to populate a DataGridView control in a Windows form. The form also has buttons to reload data and submit changes to the database.

This example requires:

References to the System, System.Windows.Forms, System.Data, and System.Xml assemblies.

Populate the connectionString variable in the example with the values for your Northwind SQL Server sample database connection. Windows Authentication, also called integrated security, is a more secure way to connect to the database than storing a password in the connection string. For more information about connection security, see Protect connection information.

Элемент управления DataGridView поддерживает стандартную модель привязки данных Windows Forms, допускающую привязку к разнообразным источникам данных. Обычно выполняется привязка к объекту BindingSource, который управляет взаимодействием с источником данных. Компонент BindingSource может быть любым источником данных Windows Forms, что обеспечивает большую гибкость при выборе или изменении расположения данных. Дополнительные сведения об источниках данных, поддерживаемых элементом управления DataGridView, см. в разделе Общие сведения об элементе управления DataGridView.

Visual Studio имеет обширную поддержку привязки данных к элементу управления DataGridView. Дополнительные сведения см. в статье Практическое руководство. Привязка данных к элементу управления DataGridView в Windows Forms с помощью конструктора.

Подключение элемента управления DataGridView к данным

Реализуйте метод, обрабатывающий получение данных. В примере кода ниже реализован метод GetData , инициализирующий компонент SqlDataAdapter и использующий его для заполнения DataTable. Затем он привязывает DataTable к BindingSource.

В обработчике событий Load формы привяжите элемент управления DataGridView к компоненту BindingSource и вызовите метод GetData для получения данных.

Например, .

Этот полный пример кода извлекает данные из базы данных для заполнения элемента управления DataGridView в форме Windows. Форма также содержит кнопки для повторной загрузки данных и отправки изменений в базу данных.

Для этого примера требуются:

ссылки на сборки System, System.Windows.Forms, System.Data и System.Xml.

Заполните переменную connectionString в примере значениями для подключения к примеру базы данных Northwind на SQL Server. Проверка подлинности Windows, также называемая встроенной безопасностью, является более безопасным способом подключения к базе данных, чем хранение пароля в строке подключения. Дополнительные сведения о безопасности подключений см. в разделе Защита сведений о подключении.

Элемент управления DataGridView заменяет элемент управления DataGrid и расширяет его функциональные возможности; однако при необходимости элемент управления DataGrid можно сохранить для обратной совместимости и использования в будущем. Дополнительные сведения см. в разделе Различия элементов управления DataGridView и DataGrid в Windows Forms.

Элемент управления Windows Forms DataGrid специально предназначен для отображения сведений из источника данных. Элемент управления привязывается во время выполнения путем вызова метода SetDataBinding. Хотя можно отображать данные из различных источников данных, наиболее типичными являются наборы данных и представления данных.

Программная привязка данных к элементу управления DataGrid

Напишите код для заполнения набора данных.

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

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

Если набор данных заполняется из XML-веб-службы, обычно создается экземпляр службы в коде, а затем вызывается один из его методов для возврата набора данных. Затем набор данных из XML-веб-службы объединяется в локальный набор данных. В следующем примере показано, как создать экземпляр XML-веб-службы с именем CategoriesService , вызвать ее метод GetCategories и объединить полученный набор данных в локальный набор данных DsCategories1 .

Вызовите метод SetDataBinding элемента управления DataGrid, передав ему источник данных и элемент данных. Если вам не нужно явно передавать элемент данных, передайте пустую строку.

При первой привязке сетки можно задать свойства DataSource и DataMember элемента управления. Однако эти свойства нельзя сбросить после их установки. Поэтому рекомендуется всегда использовать метод SetDataBinding.

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

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

(Необязательно) Добавьте соответствующие стили таблиц и стили столбцов в сетку. Если стилей таблиц нет, то таблица отобразится, но с минимальным форматированием и всеми столбцами.

Привет всем! Сегодня я покажу как связать две таблицы из БД имеющие общую связь один ко многим. Пример приведу достаточно простой, так как он не будет нам усложнять принцип понимание.

Но начнем все по порядку, по пунктам в начале создаем БД в VS в своем проекте. Далее нам необходимо создать таблицы, либо использовать мой готовый скрипт.

) WITH ( PAD_INDEX = OFF , STATISTICS_NORECOMPUTE = OFF , IGNORE_DUP_KEY = OFF , ALLOW_ROW_LOCKS = ON , ALLOW_PAGE_LOCKS = ON ) ON [ PRIMARY ]

) WITH ( PAD_INDEX = OFF , STATISTICS_NORECOMPUTE = OFF , IGNORE_DUP_KEY = OFF , ALLOW_ROW_LOCKS = ON , ALLOW_PAGE_LOCKS = ON ) ON [ PRIMARY ]

ALTER TABLE [ dbo ] . [ Человек ] WITH CHECK ADD CONSTRAINT [ FK_ Человек _ Пол ] FOREIGN KEY ( [ Пол ] )


Теперь добавим DataSet и перетащить на форму две таблицы, выглядеть будет как на рисунке сверху. VS с генерирует код. И у нас появятся адаптеры в компонентах, нам так же необходимо их переместить на форму. А на самой форме расположить два DataGridView


Следующим шаг будет связывание данных БД с DataGridView. Для этого выбираем наш DataGridView нажатием мыши и в правом верхнем углу жмем стрелочку. Открывается список источников данных, выбираем наш проект и ищем DataSet тот что мы создали, раскрываем его и выбираем первую таблицу «Пол».



Теперь осталось связать вторую таблицу с данными первой таблицы.

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

Ранее мы рассмотрели, как удобно загружать данные в приложении Windows Forms в элемент DataGridView через DataSet. Теперь определим полнофункциональную форму, через которую мы сможем производить все стандартные CRUD операции в базе данных.

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

DataSet и DataGridView

Код формы будет выглядеть следующим образом:

Здесь для добавления объекта мы будем обращаться к хранимой процедуре sp_CreateUser, которая была добавлена в базу данных в прошлой теме.

В конструкторе данные загружаются в DataSet, первая таблица которого устанавливается в качестве источника данных для dataGridView1:

Также в конструкторе устанавливается полное выделение строки и запрет на ручное добавление новых строк:

В обработчике кнопки добавления создается новая строка, которая добавляется в таблицу объекта DataSet. И так как мы ранее установили привязку к источнику данных, то автоматически новая строка также будет добавляться и в dataGridView1:

В обработчике кнопки удаления удаляются выделенные строки в dataGridView1. Опять же в силу привязки к источнику данных будет также происходить удаление и из таблицы в DataSet:

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

Как в прошлой теме здесь устанавливается у адаптера команда на добавление InsertCommand и затем вызывается метод Update() . В итоге мы можем добавить несколько строк, удалить, изменить, и потом один раз мы нажмем на кнопку, и все изменения будут применены к базе данных.

Читайте также: