Ранее для получения данных мы использовали объект SqlDataReader, с помощью которого построчно можно перебрать ответ от сервера базы данных. Но есть и другой способ, который демонстрирует использование объектов SqlDataAdapter и DataSet. DataSet представляет хранилище данных, с которыми можно работать независимо от наличия подключения, а SqlDataAdapter заполняет DataSet данными из БД.
Для получения данных через объект SqlDataAdapter необходимо организовать подключение к БД и выполнить команду SELECT. Есть несколько способов создания SqlDataAdapter:
1 2 3 4 |
|
-
Можно использовать конструктор без параметров, а команду SELECT и подключение установить позже
-
Можно передать в конструктор объект SqlCommand
-
Можно в конструкторе установить sql-выражение SELECT и объект SqlConnection
-
Можно в конструкторе установить sql-выражение SELECT и строку подключения
Рассмотрим, как получить данные в DataSet через SqlDataAdapter. Для работы с DataSet особенно удобно использовать элементы управления, которые могут заполняться из внешнего источника данных, например, DataGridView в Windows Forms. Поэтому создадим новый проект по типу Windows Forms Application.
Добавим на единственную форму в проекте элемент DataGridView и определим следующий код формы:
В конструкторе формы в DataGridView загружаются данные. Для загрузки данных создается объект SqlDataAdapter, который принимает объект подключения и sql-выражение SELECT. Затем создается объект DataSet и с помощью метода adapter.Fill()
в него загружаются данные. Дальше происходит установка источника данных для DataGridView:
dataGridView1.DataSource = ds.Tables[0];
В качестве источника устанавливается одна из таблиц в DataSet. Каждая таблица представляет объект DataTable, и в DataSet может быть определено несколько таких таблиц. Но в данном случае при выборке в DataSet есть только одна таблица, которую мы можем получить из коллекции Tables по индексу.
Мы рассмотрели загрузку данных через SqlDataAdapter в DataSet с последующим отображением в DataGridView. Однако если в базе данных очень много строк, то для более комфортной работы может потребоваться разбить эти данные на отдельные куски или страницы. Используя DataGridView очень легко сделать постраничный просмотр объект. Для этого определим на форме DataGridView и две кнопки — backButton и nextButton соответственно для перехода назад и вперед.
Затем определим следующий код формы:
Переменная pageSize определяет количество строк на одной странице, а переменная pageNumber будет хранить номер текущей просматриваемой страницы.
Запрос к базе данных будет создаваться с помощью функции GetSql()
.
В обработчике кнопки Вперед увеличивается текущая страница на единицу и производится запрос. В обработчике кнопки Назад уменьшается счетчик текущей страницы.
3 Все операции с БД в графическом приложении
Мы рассмотрели, как удобно загружать данные в приложении Windows Forms в элемент DataGridView через DataSet. Теперь определим полнофункциональную форму, через которую мы сможем производить все стандартные CRUD операции в базе данных.
Итак, определим форму, на которой будет элемент DataGridView и три кнопки для добавления, удаления и сохранения изменений. Форма в итоге будет выглядеть примерно следующим образом:
Код формы будет выглядеть следующим образом:
Здесь для добавления объекта мы будем обращаться к хранимой процедуре sp_CreateUser, которую необходимо добавить.
Добавим в базу данных следующую хранимую процедуру:
1 2 3 4 5 6 7 8 9 10 |
|
В качестве входных параметров она принимает имя и возраст пользователя и возвращает его id.
В конструкторе данные загружаются в DataSet, первая таблица которого устанавливается в качестве источника данных для dataGridView1:
1 |
|
Также в конструкторе устанавливается полное выделение строки и запрет на ручное добавление новых строк:
1 2 |
|
В обработчике кнопки добавления создается новая строка, которая добавляется в таблицу объекта DataSet. И так как мы ранее установили привязку к источнику данных, то автоматически новая строка также будет добавляться и в dataGridView1:
В обработчике кнопки удаления удаляются выделенные строки в dataGridView1. Опять же в силу привязки к источнику данных будет также происходить удаление и из таблицы в DataSet:
Для обновления на не нужна никакая кнопка, так как мы можем нажать на любую ячейку таблицы (кроме заблокированного для изменения столбца Id) и изменить в ней данные. Однако сами по себе добавление новой строки, удаление строк, изменение ячеек ни как автоматически не отразятся на базе данных. И чтобы бд синхронизировалась, пользователю надо будет нажать на кнопку сохранения, обработчик которой выглядит следующим образом:
Как в прошлой теме здесь устанавливается у адаптера команда на добавление InsertCommand
и затем вызывается метод Update()
. В итоге мы можем добавить несколько строк, удалить, изменить, и потом один раз мы нажмем на кнопку, и все изменения будут применены к базе данных.
Создание собственного элемента на примере таблицы на C# для Windows Form
В данной статье я опишу создания своих элементов для C# Windows Form.
Для примера буду создавать таблицу со всем функционалом DataGridView. Позже перейдем на свои элементы. Создание первого элемента разобьем на несколько уроков. В данном уроке произведем от рисовку таблицы, а также: создание столбцов, строк, ячеек.
Для написания будем использовать .Net FrameWork 4.7.x, среда разработки Visual Studio 2019.
В первую очередь создадим обычный проект Windows Form. Думаю не нужно это показывать. А уже потом создаем проект «Библиотека элементов управления Windows Form»(Назовем его CustomControl).
Далее у нас будет создан файл UserControl.cs. Удаляем его и создаем обычный класс TableCustoms.cs.Наш класс будет наследоваться от класса Control.
Далее в этом же файле создадим еще несколько классов, а именно:Column,Row,Cell. Рассмотрим каждый по отдельности. Начнем с Column:
Класс Cell(Для поддержки копирования добавляем интерфейс ICloneable):
Теперь настроим наш основной класс TableCustoms:
Для того, чтобы у нас были полосы прокрутки нужно использовать ScrollableControl, поэтому создадим класс PanelTable наследуем ScrollableControl и помещаем его на Control(в следующем уроке объясню почему создаем два разных контрола, а не используем сразу ScrollableControl):
После этого «Пересобираем проект» элемента и добавляем элемент на форму(в основном проекте):
Пошаговое руководство. Создание dataTable в конструкторе наборов данных
В этом пошаговом руководстве объясняется, как создать DataTable (без TableAdapter) с помощью конструктора наборов данных. Сведения о создании таблиц данных, включая TableAdapters, см. в разделе «Создание и настройка TableAdapters».
Создание приложения Windows Forms
В Visual Studio в меню Файл выберите пункты Создать>Проект.
Разверните visual C# или Visual Basic на панели слева, а затем выберите «Рабочий стол Windows«.
В средней области выберите тип проекта приложения Windows Forms .
Назовите проект DataTableWalkthrough и нажмите кнопку «ОК«.
Проект DataTableWalkthrough создается и добавляется в обозреватель решений.
Добавление нового набора данных в приложение
В меню Проект выберите команду Добавить новый элемент.
Откроется диалоговое окно Добавление нового элемента.
На панели слева выберите «Данные«, а затем выберите DataSet в средней области.
Выберите Добавить.
Visual Studio добавляет в проект файл с именем DataSet1.xsd и открывает его в конструкторе наборов данных.
Добавление новой dataTable в набор данных
Перетащите dataTable с вкладки DataSetпанели элементов в конструктор наборов данных.
Таблица с именем DataTable1 добавляется в набор данных.
Щелкните заголовок строки DataTable1 и переименуйте ее Music .
Добавление столбцов в Таблицу данных
Щелкните правой кнопкой мыши таблицу «Музыка «. Наведите указатель на пункт «Добавить» и нажмите кнопку «Столбец«.
Присвойт столбцу SongID имя.
В окне Свойства присвойте свойству DataType значение System.Int16.
Повторите этот процесс и добавьте следующие столбцы:
Установка первичного ключа для таблицы
Все таблицы данных должны иметь первичный ключ. Первичный ключ однозначно идентифицирует определенную запись в таблице данных.
Чтобы задать первичный ключ, щелкните правой кнопкой мыши столбец SongID и выберите команду «Задать первичный ключ«. Рядом со столбцом SongID появится значок клавиши.
Сохранение проекта
Чтобы сохранить проект DataTableWalkthrough , в меню «Файл » выберите «Сохранить все«.
Создать Excel в visual studio c#
Давайте научимся быстро и просто создавать и записывать файлы Excel с помощью visual studio c#. Наше самое простое приложение Windows Forms будет брать из текстбокса текст и заносить его в первую ячейку. Статья написана специально для Сергея =).
Начать необходимо с подключения библиотеки Microsoft.Office.Interop.Excel. Выглядеть это должно так:
Если у вас при открытии обозревателя решений – Ссылки – правая кнопка – Добавить ссылку – Сборки – в списке нет Microsoft.Office.Interop.Excel, то добавьте её через Nuget. Проект – управление пакетами NuGet – в строке поиска Excel:
Теперь создайте новый проект Windows Forms и на форму закиньте текстбокс и кнопку. На кнопки кликните два раза, откроется исходный код. В самом верху допишите следующее:
А в методе button1_Click замените так:
Вот, собственно говоря и все. Текст из текстбокса запишется в ячейку A1. Обратите внимание, что папка temp на диске уже должна существовать.
Дополнение. Прочитать первую ячейку
Это тоже просто:
Автор этого материала — я — Пахолков Юрий. Я оказываю услуги по написанию программ на языках Java, C++, C# (а также консультирую по ним) и созданию сайтов. Работаю с сайтами на CMS OpenCart, WordPress, ModX и самописными. Кроме этого, работаю напрямую с JavaScript, PHP, CSS, HTML — то есть могу доработать ваш сайт или помочь с веб-программированием. Пишите сюда.
заметки, си шарп, excel
SqlDataAdapter и DataSet
Данное руководство устарело. Актуальное руководство: по ADO.NET и работе с базами данных в .NET 6
Последнее обновление: 31.10.2015
Ранее для получения данных мы использовали объект SqlDataReader, с помощью которого построчно можно перебрать ответ от сервера базы данных.
Но есть и другой способ, который демонстрирует использование объектов SqlDataAdapter и DataSet. DataSet представляет хранилище данных, с которыми можно работать независимо от наличия подключения, а SqlDataAdapter заполняет
DataSet данными из БД.
Для получения данных через объект SqlDataAdapter необходимо организовать подключение к БД и выполнить команду SELECT. Есть несколько
способов создания SqlDataAdapter:
SqlDataAdapter adapter = new SqlDataAdapter(); SqlDataAdapter adapter = new SqlDataAdapter(command); SqlDataAdapter adapter = new SqlDataAdapter(sql, connection); SqlDataAdapter adapter = new SqlDataAdapter(sql, connectionString);
-
Можно использовать конструктор без параметров, а команду SELECT и подключение установить позже
-
Можно передать в конструктор объект SqlCommand
-
Можно в конструкторе установить sql-выражение SELECT и объект SqlConnection
-
Можно в конструкторе установить sql-выражение SELECT и строку подключения
Рассмотрим, как получить данные в DataSet через SqlDataAdapter. Для работы с DataSet особенно удобно использовать элементы
управления, которые могут заполняться из внешнего источника данных, например, DataGridView в Windows Forms. Поэтому создадим новый
проект по типу Windows Forms Application.
Добавим на единственную форму в проекте элемент DataGridView и определим следующий код формы:
using System.Data; using System.Windows.Forms; using System.Data.SqlClient; namespace AdoNetWinFormsApp { public partial class Form1 : Form { public Form1() { InitializeComponent(); string connectionString = @"Data Source=.SQLEXPRESS;Initial Catalog=usersdb;Integrated Security=True"; string sql = "SELECT * FROM Users"; using (SqlConnection connection = new SqlConnection(connectionString)) { connection.Open(); // Создаем объект DataAdapter SqlDataAdapter adapter = new SqlDataAdapter(sql, connection); // Создаем объект Dataset DataSet ds = new DataSet(); // Заполняем Dataset adapter.Fill(ds); // Отображаем данные dataGridView1.DataSource = ds.Tables[0]; } } } }
В конструкторе формы в DataGridView загружаются данные. Для загрузки данных создается объект SqlDataAdapter, который принимает объект подключения и sql-выражение SELECT.
Затем создается объект DataSet и с помощью метода adapter.Fill()
в него загружаются данные. Дальше происходит установка источника
данных для DataGridView:
dataGridView1.DataSource = ds.Tables[0];
В качестве источника устанавливается одна из таблиц в DataSet. Каждая таблица представляет объект DataTable, и в DataSet может быть определено
несколько таких таблиц. Но в данном случае при выборке в DataSet есть только одна таблица, которую мы можем получить из коллекции Tables по индексу.
Объект DataSet — это упрощенная реляционная база данных, которая создается только в памяти компьютера, а работа с данными происходит в отсоединенном режиме с базой данных.
Алгоритм:
- создание DataSet
- создание DataTable
- создание DataColumn
- добавление DataColumn в DataTable
- создание DataRow
- добавление DataRow в DataTable
- добавление DataTable в DataSet
Скрыть
Показать
Копировать
Form1.cs
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace _0075 { public partial class Form1 : Form { void Function() { /*создание DataSet, имитация базы данных*/ DataSet dataSet = new DataSet("abc"); /*создание DataTable, таблица*/ DataTable dataTable = new DataTable("Avto"); /*создание DataColumn, столбец*/ DataColumn ID = new DataColumn("ID", typeof(int)); //уникальный ID.Unique = true; //автозаполнение ID.AutoIncrement = true; //с какого значения будет начинаться автозаполнение ID.AutoIncrementSeed = 1; //шаг приращения ID.AutoIncrementStep = 1; DataColumn Brand = new DataColumn("Brand", typeof(string)); DataColumn Country = new DataColumn("Country", typeof(string)); /*добавление DataColumn в DataTable, добавляем колонки в таблицу*/ dataTable.Columns.AddRange(new DataColumn[] { ID, Brand, Country }); /*создание DataRow, строка*/ DataRow row1 = dataTable.NewRow(); //заполняем ячейки, название столбцов по именам row1["Brand"] = "BMW"; row1["Country"] = "Germany"; DataRow row2 = dataTable.NewRow(); //заполняем ячейки, название столбцов по индексу row2[1] = "Honda"; row2[2] = "Japan"; DataRow row3 = dataTable.NewRow(); //заполняем ячейки, название столбцов по индексу row3[1] = "Ferrari"; row3[2] = "Italy"; /*добавление DataRow в DataTable, добавление строк в таблицу*/ dataTable.Rows.Add(row1); dataTable.Rows.Add(row2); dataTable.Rows.Add(row3); /*добавление DataTable в DataSet, добавление таблицы в базу данных*/ dataSet.Tables.Add(dataTable); /*привязываем dataGridView к DataSet*/ dataGridView1.DataSource = dataSet.Tables[0]; } public Form1() { InitializeComponent(); Function(); } } }
In this article I will explain with an example, how to bind / fill / populate DataGridView control with DataSet in Windows Forms (WinForms) Application in C# and VB.Net.
Database
For this article I am making use of the Microsoft’s Northwind Database. Download and install instructions are provided in the link below
Adding a DataGridView to the Windows Form
Firstly you need to add a DataGridView control to the Windows Form from the Visual Studio ToolBox as shown below.
Namespaces
You will need to import the following namespace.
C#
using System.Data;
using System.Data.SqlClient;
VB.Net
Imports System.Data
Imports System.Data.SqlClient
Simple binding of data to DataGridView from Database using
DataSet
Below is the simple and straight forward way of binding data to DataGridView control using
DataSet.
In the below code, the DataSet is populated from Customers Table of Northwind Database and then it is set as DataSource to the DataGridView control.
In this approach all columns returned by the Select Query will be displayed in the DataGridView.
C#
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
BindGrid();
}
private void BindGrid()
{
string constring = @»Data Source=.SQL2005;Initial Catalog=Northwind;User id = sa;password=pass@123″;
using (SqlConnection con = new SqlConnection(constring))
{
using (SqlCommand cmd = new SqlCommand(«SELECT * FROM Customers», con))
{
cmd.CommandType = CommandType.Text;
using (SqlDataAdapter sda = new SqlDataAdapter(cmd))
{
using (DataSet ds = new DataSet())
{
sda.Fill(ds);
dataGridView1.DataSource = ds.Tables[0];
}
}
}
}
}
}
VB.Net
Public Class Form1
Public Sub New()
InitializeComponent()
BindGrid()
End Sub
Private Sub BindGrid()
Dim constring As String = «Data Source=.SQL2005;Initial Catalog=Northwind;User id = sa;password=pass@123»
Using con As New SqlConnection(constring)
Using cmd As New SqlCommand(«SELECT * FROM Customers», con)
cmd.CommandType = CommandType.Text
Using sda As New SqlDataAdapter(cmd)
Using
ds As New DataSet()
sda.Fill(ds)
dataGridView1.DataSource = ds.Tables(0)
End Using
End Using
End Using
End Using
End Sub
End Class
Populate Specific (Certain) columns to DataGridView control using DataSet
Sometimes requirement is such that you would like to bind only some specific (certain) columns and would not like to show all columns as done in the above approach.
For such cases we need to AutoGenerateColumns property to False (default True) and add the columns you want to show in DataGridView using code.
While adding columns it is necessary to set the following properties
Name: Unique Name of the DataGridView Column.
HeaderText: Header Text of the DataGridView Column.
DataPropertyName: Name of the Data Column Field that will be displayed in the DataGridView Column.
C#
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
BindGrid();
}
private void BindGrid()
{
string constring = @»Data Source=.SQL2005;Initial Catalog=Northwind;User id = sa;password=pass@123″;
using (SqlConnection con = new SqlConnection(constring))
{
using (SqlCommand cmd = new SqlCommand(«SELECT * FROM Customers», con))
{
cmd.CommandType = CommandType.Text;
using (SqlDataAdapter sda = new SqlDataAdapter(cmd))
{
using (DataSet ds = new DataSet())
{
sda.Fill(ds);
//Set AutoGenerateColumns False
dataGridView1.AutoGenerateColumns = false;
//Set Columns Count
dataGridView1.ColumnCount = 3;
//Add Columns
dataGridView1.Columns[0].Name = «CustomerId»;
dataGridView1.Columns[0].HeaderText = «Customer Id»;
dataGridView1.Columns[0].DataPropertyName = «CustomerID»;
dataGridView1.Columns[1].HeaderText = «Contact Name»;
dataGridView1.Columns[1].Name = «Name»;
dataGridView1.Columns[1].DataPropertyName = «ContactName»;
dataGridView1.Columns[2].Name = «Country»;
dataGridView1.Columns[2].HeaderText = «Country»;
dataGridView1.Columns[2].DataPropertyName = «Country»;
dataGridView1.DataSource = ds.Tables[0];
}
}
}
}
}
}
VB.Net
Public Class Form1
Public Sub New()
InitializeComponent()
BindGrid()
End Sub
Private Sub BindGrid()
Dim constring As String = «Data Source=.SQL2005;Initial Catalog=Northwind;User id = sa;password=pass@123»
Using con As New SqlConnection(constring)
Using cmd As New SqlCommand(«SELECT * FROM Customers», con)
cmd.CommandType = CommandType.Text
Using sda As New SqlDataAdapter(cmd)
Using
ds As New DataSet()
sda.Fill(ds)
‘Set AutoGenerateColumns False
dataGridView1.AutoGenerateColumns = False
‘Set Columns Count
dataGridView1.ColumnCount = 3
‘Add Columns
dataGridView1.Columns(0).Name = «CustomerId»
dataGridView1.Columns(0).HeaderText = «Customer Id»
dataGridView1.Columns(0).DataPropertyName = «CustomerID»
dataGridView1.Columns(1).Name = «Name»
dataGridView1.Columns(1).HeaderText = «Contact Name»
dataGridView1.Columns(1).DataPropertyName = «ContactName»
dataGridView1.Columns(2).Name = «Country»
dataGridView1.Columns(2).HeaderText = «Country»
dataGridView1.Columns(2).DataPropertyName = «Country»
dataGridView1.DataSource = ds.Tables(0)
End Using
End Using
End Using
End Using
End Sub
End Class
Downloads
Содержание
- Windows forms база данных sql
- Создание базы данных и добавление таблиц в Visual Studio
- Предварительные требования
- Создание проекта и файла локальной базы данных
- Добавление источника данных
- Просмотр свойств подключения к данным
- Создание таблиц и ключей с помощью конструктор таблиц
- Создание таблицы Customers
- Создание таблицы Orders
- Создание внешнего ключа
- Заполнение таблиц данными
- Создание формы Windows Forms для поиска данных
- Предварительные требования
- создание приложения Windows Forms
- Создание источника данных
- Создание источника данных
- Создание формы
- Добавление параметризации (функции поиска) в запрос
- Тестирование приложения
- Дальнейшие действия
- Работа с базами данных в Windows Forms с использованием языка программирования C++
- Создание простого приложения для работы с данными с помощью ADO.NET
- Предварительные требования
- Настройка образца базы данных
- Создание форм и добавление элементов управления
- Сохранение строки подключения
- Написание кода для форм
- Форма навигации
- Преобразование формы навигации в начальную форму
- Создание автоматически создаваемых обработчиков событий
- Добавление кода для логики формы навигации
- Форма NewCustomer
- Создание автоматически создаваемых обработчиков событий
- Добавление кода для логики формы NewCustomer
- Форма FillOrCancel
- Создание автоматически создаваемых обработчиков событий
- Добавление кода для логики формы Филлорканцел
- Тестирование приложения
Windows forms база данных sql
Ранее мы рассмотрели, как удобно загружать данные в приложении Windows Forms в элемент DataGridView через DataSet. Теперь определим полнофункциональную форму, через которую мы сможем производить все стандартные CRUD операции в базе данных.
Итак, определим форму, на которой будет элемент DataGridView и три кнопки для добавления, удаления и сохранения изменений. Форма в итоге будет выглядеть примерно следующим образом:
Код формы будет выглядеть следующим образом:
Здесь для добавления объекта мы будем обращаться к хранимой процедуре sp_CreateUser, которая была добавлена в базу данных в прошлой теме.
В конструкторе данные загружаются в DataSet, первая таблица которого устанавливается в качестве источника данных для dataGridView1:
Также в конструкторе устанавливается полное выделение строки и запрет на ручное добавление новых строк:
В обработчике кнопки добавления создается новая строка, которая добавляется в таблицу объекта DataSet. И так как мы ранее установили привязку к источнику данных, то автоматически новая строка также будет добавляться и в dataGridView1:
В обработчике кнопки удаления удаляются выделенные строки в dataGridView1. Опять же в силу привязки к источнику данных будет также происходить удаление и из таблицы в DataSet:
Для обновления на не нужна никакая кнопка, так как мы можем нажать на любую ячейку таблицы (кроме заблокированного для изменения столбца Id) и изменить в ней данные. Однако сами по себе добавление новой строки, удаление строк, изменение ячеек ни как автоматически не отразятся на базе данных. И чтобы бд синхронизировалась, пользователю надо будет нажать на кнопку сохранения, обработчик которой выглядит следующим образом:
Источник
Создание базы данных и добавление таблиц в Visual Studio
Visual Studio можно использовать для создания и обновления файла локальной базы данных в SQL Server Express LocalDB. можно также создать базу данных, выполнив инструкции Transact-SQL в окне инструментов обозревателя объектов SQL Server в Visual Studio. В этом разделе мы создадим MDF файл и добавим таблицы и ключи с помощью Конструктор таблиц.
Предварительные требования
Создание проекта и файла локальной базы данных
в строке меню выберите Project > добавить новый элемент.
В списке шаблонов элементов прокрутите вниз и выберите база данных на основе службы.
базы данных на основе службы» data-linktype=»relative-path»>
базы данных на основе службы» data-linktype=»relative-path»>
Присвойте базе данных имя сампледатабасе и нажмите кнопку Добавить.
Добавление источника данных
если окно источники данных не открыто, откройте его, нажав клавиши Shift + Alt + D или выбрав просмотреть > другие Windows > источники данных в строке меню.
В окне Источники данных выберите Добавить новый источник данных.
На странице Выбор подключения к данным выберите файл сампледатабасе. mdf в раскрывающемся списке и нажмите кнопку Далее.
На странице сохранить строку подключения в файле конфигурации приложения нажмите кнопку Далее.
На странице Выбор объектов базы данных появится сообщение о том, что база данных не содержит объектов. Нажмите кнопку Готово.
Просмотр свойств подключения к данным
Создание таблиц и ключей с помощью конструктор таблиц
В этом разделе вы создадите две таблицы, первичный ключ в каждой таблице и несколько строк образца данных. Вы также создадите внешний ключ, чтобы указать, как записи в одной таблице соответствуют записям в другой таблице.
Создание таблицы Customers
Щелкните правой кнопкой мыши таблицы и выберите команду Добавить новую таблицу.
Будет открыт Конструктор таблиц, отобразится сетка с одной строкой по умолчанию, которая представляет один столбец в создаваемой таблице. Путем добавления строк в сетку будут добавлены столбцы в таблицу.
В сетке добавьте строку для каждой из следующих записей.
Имя столбца | Тип данных | Разрешить значения null |
---|---|---|
CustomerID | nchar(5) | False (не установлен) |
CompanyName | nvarchar(50) | False (не установлен) |
ContactName | nvarchar (50) | True (установлен) |
Phone | nvarchar (24) | True (установлен) |
Щелкните строку правой кнопкой мыши CustomerID и выберите пункт Задать первичный ключ.
Щелкните строку по умолчанию () правой кнопкой мыши Id и выберите пункт Удалить.
Назовите таблицу «Клиенты» путем обновления первой строки в области скриптов, как показано в следующем примере:
Отобразятся примерно следующие сведения:
В левом верхнем углу Конструктор таблиц выберите Обновить или нажмите клавиши SHIFT + ALT + U.
В диалоговом окне Предварительный просмотр обновлений базы данных выберите обновить базу данных.
Таблица Customers создается в файле локальной базы данных.
Создание таблицы Orders
Создайте еще одну таблицу, а затем добавьте строку для каждой записи следующей таблицы.
Имя столбца | Тип данных | Разрешить значения null |
---|---|---|
OrderID | int | False (не установлен) |
CustomerID | nchar(5) | False (не установлен) |
OrderDate | datetime | True (установлен) |
OrderQuantity | int | True (установлен) |
Задайте OrderID в качестве первичного ключа, а затем удалите строку по умолчанию.
Назовите таблицу «Заказы» путем обновления первой строки в области скриптов, как показано в следующем примере:
В левом верхнем углу Конструктор таблиц выберите Обновить или нажмите клавиши SHIFT + ALT + U.
В диалоговом окне Предварительный просмотр обновлений базы данных выберите обновить базу данных.
Таблица Orders создается в файле локальной базы данных. Если развернуть узел таблицы в обозреватель сервера, отобразятся две таблицы:
Если вы не видите его, нажмите кнопку Обновить на панели инструментов.
Создание внешнего ключа
В контекстной области в правой части сетки конструктор таблиц для таблицы Orders щелкните правой кнопкой мыши внешние ключи и выберите Добавить новый внешний ключ.
В появившемся текстовом поле замените текст ToTable на Customers.
в области T-SQL обновите последнюю строку, чтобы она соответствовала следующему примеру:
В левом верхнем углу Конструктор таблиц выберите Обновить (SHIFT + ALT + U).
В диалоговом окне Предварительный просмотр обновлений базы данных выберите обновить базу данных.
Создается внешний ключ.
Заполнение таблиц данными
в обозреватель сервера или SQL Server обозревателе объектов разверните узел образца базы данных.
Откройте контекстное меню таблицы Customers и выберите Просмотреть данные.
Добавьте необходимые данные для некоторых клиентов.
Можно указать любые пять символов как ИД клиентов, но хотя бы один нужно выбрать и запомнить для дальнейшего использования в этой процедуре.
Откройте контекстное меню таблицы Orders и выберите пункт отобразить данные таблицы.
Добавление данных для некоторых заказов. При вводе каждой строки она сохраняется в базе данных.
Убедитесь, что все идентификаторы заказов и количества заказов — целые числа, и каждый идентификатор клиента соответствует значению, указанному в столбце CustomerID таблицы клиентов.
Поздравляем! Теперь вы умеете создавать таблицы, связывать их с внешним ключом и добавлять данные.
Источник
Создание формы Windows Forms для поиска данных
Довольно распространенным сценарием приложения является отображение выбранных данных на форме. Например, вам может потребоваться отобразить заказы для определенного клиента или сведения о конкретном заказе. В таком сценарии пользователь вводит в форму информацию, после чего выполняется запрос, включающий в себя эти введенные пользователем данные в качестве параметра; таким образом, данные выбираются на основе параметризированного запроса. Запрос возвращает только те данные, которые удовлетворяют введенным пользователем условиям. Это пошаговое руководство показывает, как создать запрос, возвращающий клиентов из определенного города, и изменить пользовательский интерфейс, чтобы пользователи могли ввести название города и нажать кнопку для выполнения запроса.
Использование параметризованных запросов помогает сделать приложение эффективным, так как позволяет базе данных заниматься своей непосредственной задачей — быстрой фильтрацией записей. И наоборот, если запросить всю таблицу базы данных, передать ее по сети и использовать логику приложения для поиска записей, ваше приложение станет медленным и неэффективным.
В данном пошаговом руководстве представлены следующие задачи.
Создание отображающих данные элементов управления с помощью перетаскивания элементов из окна Источники данных на форму.
Добавление элементов управления для отображения данных на форме.
Ввод параметров в форму и выполнение параметризованного запроса.
Предварительные требования
Необходимо установить рабочую нагрузку » Хранение и обработка данных «. См. раздел Изменение Visual Studio.
в этом пошаговом руководстве используется SQL Server Express LocalDB и образец базы данных Northwind.
если у вас нет SQL Server Express LocalDB, установите его на странице загрузки SQL Server Expressили с помощью Visual Studio Installer. в Visual Studio Installer можно установить SQL Server Express LocalDB как часть рабочей нагрузки хранения и обработки данных или как отдельный компонент.
Установите учебную базу данных Northwind, выполнив следующие действия.
Откроется окно редактора запросов.
скопируйте скрипт Transact-SQL Northwind в буфер обмена. этот сценарий T-SQL создает базу данных Northwind с нуля и заполняет ее данными.
По истечении короткого времени выполнение запроса завершается и создается база данных Northwind.
создание приложения Windows Forms
Создание источника данных
На этом шаге Мастер настройки источника данных используется для создания источника данных из базы данных.
В окне Источники данных выберите Добавить новый источник данных, чтобы запустить Мастер настройки источника данных.
На странице Выбор типа источника данных выберите элемент База данных и нажмите Далее.
На странице Выбор подключения к базе данных выполните одно из следующих действий:
Если подключение к учебной базе данных Northwind доступно в раскрывающемся списке, то выберите его.
Выберите Новое подключение для открытия диалогового окна Добавить/изменить подключение.
Если базе данных требуется пароль, выберите параметр для включения конфиденциальных данных и нажмите кнопку Далее.
На странице Сохранение подключения в файле конфигурации приложения нажмите кнопку Далее.
Разверните узел Таблицы на странице Выбор объектов базы данных.
Выберите таблицу Клиенты и нажмите Готово.
Объект NorthwindDataSet добавляется в проект, и таблица Клиенты отображается в окне Источники данных.
Создание источника данных
На этом шаге Мастер настройки источника данных используется для создания источника данных из базы данных.
В окне Источники данных выберите Добавить новый источник данных, чтобы запустить Мастер настройки источника данных.
На странице Выбор типа источника данных выберите элемент База данных и нажмите Далее.
На экране Выбор модели базы данных выберите набор данных, а затем нажмите кнопку Далее.
На странице Выбор подключения к базе данных выполните одно из следующих действий:
Если подключение к учебной базе данных Northwind доступно в раскрывающемся списке, то выберите его.
Выберите Новое подключение для открытия диалогового окна Добавить/изменить подключение.
На странице Сохранение подключения в файле конфигурации приложения нажмите кнопку Далее.
Разверните узел Таблицы на странице Выбор объектов базы данных.
Выберите таблицу Клиенты и нажмите Готово.
Объект NorthwindDataSet добавляется в проект, и таблица Клиенты отображается в окне Источники данных.
Создание формы
Можно создать элементы управления с привязкой к данным, перетащив элементы из окна Источники данных на форму:
убедитесь, что конструктор Windows Forms имеет активное фокус, а окно источники данных открыто и закреплено.
Разверните узел Customers в окне Источники данных.
Перетащите узел Клиенты из окна Источники данных на свою форму.
На форме появляются DataGridView и полоса инструментов (BindingNavigator) для перемещения по записям. В области компонентов появляется NorthwindDataSet, CustomersTableAdapter, BindingSource и BindingNavigator.
Добавление параметризации (функции поиска) в запрос
Предложение WHERE можно добавить в исходный запрос с помощью диалогового окна Построитель условий поиска :
Добавьте WHERE City = @City в запрос в области Текст запроса.
Запрос должен выглядеть примерно следующим образом:
Нажмите кнопку ОК, чтобы закрыть диалоговое окно Построитель условий поиска.
На форму добавляется FillByCityToolStrip.
Тестирование приложения
При запуске приложения открывается форма, и она готова принять параметр в качестве входных данных:
Нажмите клавишу F5 для запуска приложения.
Введите Лондон в текстовом поле Город и щелкните FillByCity.
Сетка данных заполняется клиентами, которые удовлетворяют критериям. В этом примере сетка данных отображает только клиентов, для которых в столбце Город задано значение Лондон.
Дальнейшие действия
В зависимости от требований приложения существуют несколько шагов, которые, возможно, потребуется выполнить после создания параметризованной формы. Ниже приводится перечень рекомендаций, позволяющих улучшить полученный результат.
Добавление элементов управления, отображающих связанные данные. Дополнительные сведения см. в разделе связи в наборах данных.
Изменение набора данных для добавления или удаления объектов базы данных. Дополнительные сведения см. в разделе, посвященном созданию и настройке наборов данных.
Источник
Работа с базами данных в Windows Forms с использованием языка программирования C++
Как известно, начиная с версии 2008, работа с базами данных (БД) в Windows Forms средствами Microsoft Visual C++ (VC++) невозможна. Однако это не совсем так.
Начиная с версии 2008, стала недоступна работа с БД с помощью уже привычного графического интерфейса. То есть, для работы с ними нельзя создать и настроить, а, следовательно, и использовать, не визуальные элементы управления DataSet, BindingSource и TableAdapter. В то же время возможно работы с БД при помощи «обычных» классов ADO.NET полностью сохранилась.
Для реализации взаимодействия с БД служат «обычные» классы OleDbConnection, OleDbCommand и OleDbDataReader. Но, в виду того, что в Windows Forms используется управляемый код с привязкой C++/CLI, их использование имеет некоторые особенности.
Рассмотрим пример. Есть БД Microsoft Office Access, которая содержит список авторов книг в таблице Author.
Создадим простое приложение, которое будет загружать данные из этой таблицы (надписи элементов управления, включая заголовки столбцов DataGridView, предварительно настроены с помощью визуального конструктора).
Данные будем загружать в элемент управления DataGridView при нажатии на кнопку «Получить данные».
Создадим в обработчике события нажатия этой кнопки подключение к БД.
Источник
Создание простого приложения для работы с данными с помощью ADO.NET
В этой статье демонстрируется простой способ быстрого получения данных из базы данных. Если приложению необходимо изменить данные с помощью нетривиальных способов и обновить базу данных, следует рассмотреть возможность использования Entity Framework и привязки данных для автоматической синхронизации элементов управления пользовательского интерфейса с изменениями в базовых данных.
С целью упрощения код не включает обработку исключений для выполнения в рабочей среде.
Предварительные требования
Для создания приложения вам потребуются следующие компоненты.
SQL Server Express LocalDB. если у вас нет SQL Server Express LocalDB, его можно установить на странице загрузки SQL Server Express.
Настройка образца базы данных
Создайте образец базы данных, выполнив следующие действия.
щелкните правой кнопкой мыши подключения к данным и выберите команду создать новую базу данных SQL Server.
В текстовом поле имя сервера введите (LocalDB) mssqllocaldb.
В текстовом поле имя новой базы данных введите Sales, а затем нажмите кнопку ОК.
Пустая база данных Sales создается и добавляется в узел подключения к данным в обозреватель сервера.
Щелкните правой кнопкой мыши подключение к данным о продажах и выберите создать запрос.
Откроется окно редактора запросов.
По истечении короткого времени выполнение запроса завершается и создаются объекты базы данных. База данных содержит две таблицы: Customer и Orders. Эти таблицы изначально не содержат данных, но их можно добавить при запуске создаваемого приложения. База данных также содержит четыре простые хранимые процедуры.
Создание форм и добавление элементов управления
Создайте проект для приложения Windows Forms и назовите его SimpleDataApp.
Visual Studio создает проект и несколько файлов, включая пустую форму Windows Forms с именем Form1.
Добавьте две формы Windows Forms в проект, чтобы он включал три формы, и назначьте им следующие имена:
Навигация
NewCustomer
FillOrCancel
Для каждой формы добавьте текстовые поля, кнопки и другие элементы управления, которые отображаются на рисунках ниже. Для каждого элемента управления задайте свойства, указанные в таблицах.
Элементы управления «группа» и «надпись» обеспечивают большую ясность, но не используются в коде.
Форма навигации
Элементы управления формы навигации | Элемент Property |
---|---|
Кнопка | Name = btnGoToAdd |
Кнопка | Name = btnGoToFillOrCancel |
Кнопка | Name = btnExit |
Форма NewCustomer
Элементы управления формы NewCustomer | Элемент Property |
---|---|
TextBox | Name = txtCustomerName |
TextBox | Name = txtCustomerID
Readonly = True |
Кнопка | Name = btnCreateAccount |
NumericUpDown | DecimalPlaces = 0
Name = numOrderAmount |
DateTimePicker | Format = Short
Name = dtpOrderDate |
Кнопка | Name = btnPlaceOrder |
Кнопка | Name = btnAddAnotherAccount |
Кнопка | Name = btnAddFinish |
Форма FillOrCancel
Элементы управления формы FillOrCancel | Элемент Property |
---|---|
TextBox | Name = txtOrderID |
Кнопка | Name = btnFindByOrderID |
DateTimePicker | Format = Short
Name = dtpFillDate |
DataGridView | Name = dgvCustomerOrders
RowHeadersVisible = False |
Кнопка | Name = btnCancelOrder |
Кнопка | Name = btnFillOrder |
Кнопка | Name = btnFinishUpdates |
Сохранение строки подключения
Когда приложение пытается открыть подключение к базе данных, оно должно иметь доступ к строке подключения. Чтобы не вводить строку вручную в каждой форме, сохраните строку в файле App.config в проекте и создайте метод, возвращающий строку при вызове метода из любой формы в приложении.
В списке тип выберите (строка подключения).
В списке область выберите приложение.
В столбце значение введите строку подключения (без кавычек), а затем сохраните изменения.
В реальных приложениях строку подключения следует хранить безопасно, как описано в разделе строки подключения и файлы конфигурации.
Написание кода для форм
Этот раздел содержит краткие обзоры того, что делает каждая форма. Он также предоставляет код, определяющий базовую логику при нажатии кнопки на форме.
Форма навигации
Форма навигации открывается при запуске приложения. Кнопка Добавить учетную запись открывает форму NewCustomer. Кнопка Выполнение или отмена заказов открывает форму FillOrCancel. Кнопка Выход закрывает приложение.
Преобразование формы навигации в начальную форму
При использовании C# в обозревателе решений откройте файл Program.cs и измените строку Application.Run на следующую: Application.Run(new Navigation());
Создание автоматически создаваемых обработчиков событий
Дважды щелкните три кнопки в форме навигации, чтобы создать пустые методы обработчика событий. При двойном щелчке кнопки также добавляется автоматически созданный код в файл кода конструктора, который позволяет нажать кнопку для вызова события.
Добавление кода для логики формы навигации
На странице кода для формы навигации заполните основные тексты методов для трех обработчиков событий нажатия кнопки, как показано в следующем коде.
Форма NewCustomer
Создание автоматически создаваемых обработчиков событий
Создайте пустой обработчик событий щелчка для каждой кнопки в форме NewCustomer, дважды щелкнув каждую из четырех кнопок. При двойном щелчке кнопки также добавляется автоматически созданный код в файл кода конструктора, который позволяет нажать кнопку для вызова события.
Добавление кода для логики формы NewCustomer
Чтобы завершить логику формы NewCustomer, выполните следующие действия.
Перенесите System.Data.SqlClient пространство имен в область, чтобы не указывать полные имена его членов.
Добавьте в класс некоторые переменные и вспомогательные методы, как показано в следующем коде.
Заполните основные тексты методов для четырех обработчиков событий нажатия кнопки, как показано в следующем коде.
Форма FillOrCancel
Создание автоматически создаваемых обработчиков событий
Создайте пустые обработчики событий щелчка для четырех кнопок в форме Филлорканцел, дважды щелкнув кнопки. При двойном щелчке кнопки также добавляется автоматически созданный код в файл кода конструктора, который позволяет нажать кнопку для вызова события.
Добавление кода для логики формы Филлорканцел
Чтобы завершить логику формы Филлорканцел, выполните следующие действия.
Перенесите следующие два пространства имен в область, чтобы не указывать полные имена их членов.
Добавьте в класс переменную и вспомогательный метод, как показано в следующем коде.
Заполните основные тексты методов для четырех обработчиков событий нажатия кнопки, как показано в следующем коде.
Тестирование приложения
Нажмите клавишу F5 для сборки и тестирования приложения после написания кода для каждого обработчика события нажатия кнопки и общего кода программы.
Источник