Перейти к содержимому

Как добавить базу данных в visual studio c

  • автор:

Подключение в базу данных в Visual Studio

Область применения:yesVisual Studio Visual Studio для Mac noVisual Studio Code no

В этой статье показано, как подключиться к источнику данных в интегрированной среде разработки Visual Studio. Источник данных может быть локальной базой данных, веб-службой данных или базой данных, открытой .mdf из файла. Вы можете работать непосредственно с данными в Visual Studio. Вы можете выполнять запросы, изменять данные, создавать и изменять таблицы и другие свойства схемы, изменять хранимые процедуры и функции, триггеры и т. д. Эти функции не зависят от используемого языка программирования или версии .NET.

Серверные Обозреватель и SQL Server обозреватель объектов

Вы можете открыть подключение к базе данных или службе, базу данных LocalDB, открытую из .mdf файла, и просматривать и изменять таблицы и строки данных с помощью серверных Обозреватель или SQL Server обозреватель объектов. Функциональные возможности этих окон перекрываются в некоторой степени. Основные различия:

  • Обозреватель сервера Устанавливается по умолчанию в Visual Studio. Можно использовать для тестирования подключений и просмотра баз данных SQL Server, других баз данных с установленным поставщиком ADO.NET и некоторых служб Azure. Также показаны низкоуровневые объекты, такие как счетчики производительности системы, журналы событий и очереди сообщений. Если у источника данных нет поставщика ADO.NET, он не будет отображаться здесь, но его можно использовать из Visual Studio программным способом.
  • Cloud Explorer Установите это окно вручную в качестве расширения Visual Studio из Visual Studio Marketplace. Предоставляет специализированные функции для изучения и подключения к службам Azure.
  • Обозреватель объектов SQL Server Установлен с sql Server Data Tools и отображается в меню «Вид «. Если он не отображается, перейдите в раздел «Программы и компоненты» в панель управления, найдите Visual Studio и нажмите кнопку «Изменить«, чтобы повторно запустить установщик после выбора поля проверка для SQL Server Data Tools. Используйте sql Server обозреватель объектов для просмотра баз данных SQL (если у них есть поставщик ADO.NET), создания баз данных, изменения схем, создания хранимых процедур, получения строка подключения, просмотра данных и т. д. Базы данных SQL, у которых нет установленных поставщиков ADO.NET, не отображаются здесь, но вы по-прежнему можете подключиться к ним программным способом.

Вы можете открыть подключение к базе данных или службе или базе данных LocalDB, открываемой из .mdf файла, и просматривать таблицы и строки данных, используя серверные Обозреватель или SQL Server обозреватель объектов. Функциональные возможности этих окон перекрываются в некоторой степени. Основные различия:

  • Обозреватель сервера Устанавливается по умолчанию в Visual Studio. Можно использовать для тестирования подключений и просмотра баз данных SQL Server, других баз данных с установленным поставщиком ADO.NET и некоторых служб Azure. Также показаны низкоуровневые объекты, такие как счетчики производительности системы, журналы событий и очереди сообщений. Если у источника данных нет поставщика ADO.NET, он не будет отображаться здесь, но его можно использовать из Visual Studio программным способом.
  • Обозреватель объектов SQL Server Установлен с sql Server Data Tools и отображается в меню «Вид «. Если он не отображается, перейдите в раздел «Программы и компоненты» в панель управления, найдите Visual Studio и нажмите кнопку «Изменить«, чтобы повторно запустить установщик после выбора поля проверка для SQL Server Data Tools. Используйте sql Server обозреватель объектов для просмотра баз данных SQL (если у них есть поставщик ADO.NET), создания баз данных, изменения схем, создания хранимых процедур, получения строка подключения, просмотра данных и т. д. Базы данных SQL, у которых нет установленных поставщиков ADO.NET, не отображаются здесь, но вы по-прежнему можете подключиться к ним программным способом.

Добавление подключения в сервере Обозреватель

Чтобы создать подключение к базе данных, щелкните значок Подключение к базе данных в сервере Обозреватель или щелкните правой кнопкой мыши сервер Обозреватель на узле «Данные Подключениеions» и выберите «Добавить Подключение». Здесь можно открыть подключение к базе данных LocalDB, открытой из .mdf файла, подключиться к базе данных на другом сервере, службе SharePoint или службе Azure.

Screenshot showing Server Explorer New Connection icon.

Screenshot showing Server Explorer Connect to Database icon.

Откроется диалоговое окно «Добавление Подключение ion«. Здесь мы ввели имя экземпляра SQL Server LocalDB, (localdb)\MSSqlLocalDB который обычно устанавливается с Visual Studio.

Если у вас нет доступа к другой базе данных, и вы не видите LocalDB, вы можете установить LocalDB через Установщик Visual Studio, как часть рабочей нагрузки хранилища данных и обработки , рабочую нагрузку ASP.NET и веб-разработки или как отдельный компонент. См. раздел Изменение Visual Studio.

Screenshot of Add New Connection dialog box.

Screenshot of Add New Connection dialog box.

В Visual Studio 2022 версии 17.8 и более поздних версий диалоговое окно включает два новых параметра (сертификат шифрования и сервера доверия), которые входят в строка подключения и влияют на параметры безопасности, используемые для подключения. Эти параметры поддерживают более строгие функции безопасности драйвера базы данных Microsoft.Data.SqlClient 4.0. См . изменения в поведении проверки шифрования и сертификата.

Рекомендуется использовать шифрование и установить сертификат на сервере. См . проверку шифрования и сертификата. Чтобы отказаться от этой расширенной безопасности, установите для параметра Encrypt значение «Необязательный( false)«.

Если вы не установите для шифрования необязательный параметр с помощью Visual Studio 17.8 или более поздней версии, которая использует версию 4.0 Microsoft.Data.SqlClient, шифрование по умолчанию является обязательным. Это критическое изменение поведения в более ранних версиях. Если у вас нет допустимого сертификата или вы не выбрали сертификат сервера доверия, вы получите следующее сообщение об ошибке:

Шифрование было включено в этом подключении, просмотрите конфигурацию SSL и сертификата для целевого SQL Server или включите сертификат сервера доверия в диалоговом окне подключения.

Дополнительные сведения

Соединение с сервером было успешно установлено, но при входе в систему произошла ошибка. (поставщик: поставщик SSL, ошибка: 0 — цепочка сертификатов была выдана центром, который не является доверенным.) (Microsoft SQL Server)

Типы аутентификации

Вы можете выбрать различные типы проверки подлинности, охватывающие широкий спектр сценариев. Дополнительные сведения см. в разделе «Типы проверки подлинности».

В Visual Studio 17.8 и более поздних версиях имена параметров проверки подлинности для подключений SQL были обновлены, чтобы отразить изменение имени с Active Directory на Microsoft Entra.

Screenshot showing authentication types for Visual Studio 17.8 and later.

MDF-файлы

Файл .mdf имеет значение Master Database File и является базой данных SQL, упакованой в файл. Эти файлы имеют связанный .ldf (файл базы данных журнала), содержащий журналы для этой базы данных. Вы можете создать новые базы данных, хранящиеся в .mdf файлах, добавив в проект элемент базы данных на основе служб. См. статью «Создание базы данных» и добавление таблиц.

Если у вас уже есть .mdf файл в проекте, можно дважды щелкнуть или щелкнуть правой кнопкой мыши и открыть его в сервере Обозреватель.

Чтобы открыть .mdf файл, который не находится в проекте в Обозреватель сервера Visual Studio, выполните следующие действия.

Screenshot showing Add Connection dialog box, connecting to a SQL Database file.

  1. В диалоговом окне «Добавление подключения» в разделе «Источник данных» выберите файл базы данных Microsoft SQL Server (SqlClient).
  2. Нажмите кнопку «Обзор«, чтобы найти и выбрать файл базы данных master ( .mdf файл) или введите путь в поле имени файла базы данных.
  3. Выберите метод проверки подлинности.
  4. Проверьте подключение и, если оно выполнено успешно, нажмите кнопку «ОК«. Узел для базы данных открывается на сервере Обозреватель.

Изменение поставщика

Если источник данных не является нужным, нажмите кнопку «Изменить «, чтобы выбрать новый источник данных и (или) новый поставщик данных ADO.NET. Новый поставщик может запрашивать учетные данные в зависимости от того, как он настроен.

Если вы используете Visual Studio 2022 для подключения к поставщикам данных OLEDB или ODBC, необходимо знать, что Visual Studio 2022 теперь является 64-разрядным процессом.

Это означает, что некоторые средства данных в Visual Studio не смогут подключаться к базам данных OLEDB или ODBC с помощью 32-разрядных поставщиков данных. Сюда входят поставщик данных OLEDB Microsoft Access 32-разрядной версии, а также другие сторонние 32-разрядные поставщики.

Если вам нужно поддерживать 32-разрядные приложения, подключающиеся к OLEDB или ODBC, вы по-прежнему сможете создавать и запускать приложение с помощью Visual Studio 2022. Однако если вам нужно использовать любой из средств обработки данных Visual Studio, таких как серверные Обозреватель, мастер источника данных или конструктор наборов данных, вам потребуется использовать более раннюю версию Visual Studio, которая по-прежнему является 32-разрядным процессом. Последняя версия Visual Studio, которая была 32-разрядным процессом, была Visual Studio 2019.

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

Если приложение использует базы данных Microsoft Access и может преобразовать проект в 64-разрядную версию, рекомендуется использовать 64-разрядную версию Microsoft Access ядро СУБД, также называемую подсистемой Подключение ivity Engine (ACE). Дополнительные сведения см. в статье OLE DB Provider for Jet и ODBC driver are 32-разрядные версии.

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

Screenshot showing how to change the ADO.NET data provider.

Screenshot showing how to change the ADO.NET data provider.

Проверка подключения

Выбрав источник данных, нажмите кнопку «Тестировать» Подключение ion. Если это не удалось, вам потребуется устранить неполадки в соответствии с документацией поставщика.

Screenshot showing Test Connection succeeded message box.

Screenshot showing Test Connection succeeded message box.

Если тест выполнен успешно, вы готовы создать источник данных, который является термином Visual Studio, который действительно означает модель данных, основанную на базовой базе данных или службе.

Подключение с помощью SQL Server обозреватель объектов

Это может быть проще, если вы используете SQL Server обозреватель объектов, что дает вам диалоговое окно, которое обеспечивает большую помощь в поиске доступных баз данных локально, в локальной сети и в подписках Azure и предоставляет историю недавно использованных вариантов.

Чтобы открыть диалоговое окно подключения из SQL Server обозреватель объектов, нажмите кнопку «Добавить SQL Server«.

Screenshot of SQL Server Object Explorer Add SQL Server button

Откроется диалоговое окно подключения. Выберите локальный, сетевой или сервер SQL Azure, выберите базу данных, укажите учетные данные и выберите Подключение.

Screenshot of SQL Server Object Explorer Connect dialog.

Если вам нужно задать другие параметры в строка подключения, можно использовать ссылку «Дополнительно«, которая выводит все параметры. Например, чтобы подключиться к базе данных LocalDB, основанной на MDF-файле, выберите «Дополнительно » и задайте свойство AttachDbFilename.

Screenshot showing Advanced settings.

После настройки подключения сервер и база данных отображаются в окне обозреватель объектов SQL Server.

Screenshot showing Connected successfully message.

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

Следующие шаги

Если вы используете платформа .NET Framework (не .NET Core или .NET 5 или более поздней версии), а Windows Forms или WPF, можно использовать окно источников данных, например для настройки привязки данных для элементов управления в Windows Forms и приложениях WPF, см. статью «Добавление новых источников данных». Эти средства предназначены для быстрого создания приложений Windows, которые должны разрешать пользователям вводить, отображать и управлять данными.

Если вы используете .NET 5 или более поздней версии , .NET Core или ASP.NET Core, вы можете подключить приложение к базе данных с помощью Подключение служб. С помощью Подключение служб можно легко использовать локальную базу данных разработки, размещенную с помощью SQL LocalDB, SQL Server, работающей в контейнере или локальном экземпляре SQL Server, а затем перейти к База данных SQL Azure, когда вы будете готовы развернуть в облаке. Для .NET 5 или более поздней версии .NET Core и ASP.NET Core следует использовать Entity Framework Core в качестве платформы базы данных.

См. также

Create a database and add tables in .NET Framework applications using Visual Studio

Applies to: yesVisual Studio noVisual Studio for Mac noVisual Studio Code

Datasets and related classes are legacy .NET Framework technologies from the early 2000s that enable applications to work with data in memory while the applications are disconnected from the database. They are especially useful for applications that enable users to modify data and persist the changes back to the database. Although datasets have proven to be a very successful technology, we recommend that new .NET applications use Entity Framework Core. Entity Framework provides a more natural way to work with tabular data as object models, and it has a simpler programming interface.

You can use Visual Studio to create and update a local database file in SQL Server Express LocalDB. You can also create a database by executing Transact-SQL statements in the SQL Server Object Explorer tool window in Visual Studio. In this topic, you create an .mdf file and add tables and keys by using the Table Designer.

Prerequisites

To complete this walkthrough, you need the .NET desktop development and Data storage and processing workloads installed in Visual Studio. To install them, open Visual Studio Installer and choose Modify (or More > Modify) next to the version of Visual Studio you want to modify. See Modify Visual Studio.

The procedures in this article apply only to .NET Framework Windows Forms projects, not to .NET Core Windows Forms projects.

Create a project and a local database file

  1. Create a new Windows Forms App (.NET Framework) project and name it SampleDatabaseWalkthrough.
  2. On the menu bar, select Project >Add New Item. If you see a small dialog box with a box for a filename, choose Show All Templates.
  3. In the list of item templates, scroll down and select Service-based Database.

Add New item ></p>
<p>Service-based database» /></p>
<p><img decoding=

Add new data source in Visual Studio

View properties of the data connection

You can view the connection string for the SampleDatabase.mdf file by opening the Properties window of the data connection:

  • Select View >SQL Server Object Explorer to open the SQL Server Object Explorer window. Expand (localdb)\MSSQLLocalDB >Databases, and then right-click on SampleDatabase.mdf (it might be listed as a full path) and select Properties.
  • Alternatively, you can select View >Server Explorer, if that window isn’t already open. Open the Properties window by expanding the Data Connections node, right-clicking on SampleDatabase.mdf, and then selecting Properties.

Tip If you can’t expand the Data Connections node, or the SampleDatabase.mdf connection is not listed, select the Connect to Database button in the Server Explorer toolbar. In the Add Connection dialog box, make sure that Microsoft SQL Server Database File is selected under Data source, and then browse to and select the SampleDatabase.mdf file. Finish adding the connection by selecting OK.

Create tables and keys by using Table Designer

In this section, you create two tables, a primary key in each table, and a few rows of sample data. you also create a foreign key to specify how records in one table correspond to records in the other table.

Create the Customers table

  1. In Server Explorer or SQL Server Object Browser, expand the Data Connections node, and then expand the SampleDatabase.mdf node.
  2. Right-click on Tables and select Add New Table. The Table Designer opens and shows a grid with one default row, which represents a single column in the table that you’re creating. By adding rows to the grid, you add columns in the table.
  3. In the grid, add a row for each of the following entries:
    Column name Data type Allow nulls
    CustomerID nchar(5) False (cleared)
    CompanyName nvarchar(50) False (cleared)
    ContactName nvarchar (50) True (selected)
    Phone nvarchar (24) True (selected)
  4. Right-click on the CustomerID row, and then select Set Primary Key.
  5. Right-click on the default row ( Id ), and then select Delete.
  6. Name the Customers table by updating the first line in the script pane to match the following sample:
CREATE TABLE [dbo].[Customers] 
CONSTRAINT [PK_Customers] PRIMARY KEY ([CustomerID]) 

You should see something like this:

Table Designer with Customers table

Table Designer with Customers table

Create the Orders table

  1. Add another table, and then add a row for each entry in the following table:
    Column name Data type Allow nulls
    OrderID int False (cleared)
    CustomerID nchar(5) False (cleared)
    OrderDate datetime True (selected)
    OrderQuantity int True (selected)
  2. Set OrderID as the primary key, and then delete the default row.
  3. Name the Orders table by updating the first line in the script pane to match the following sample:
CREATE TABLE [dbo].[Orders] 
CONSTRAINT [PK_Orders] PRIMARY KEY ([OrderId]) 

Tables node expanded in Server Explorer

Tables node expanded in Server Explorer

Create a foreign key

  1. In the context pane on the right side of the Table Designer grid for the Orders table, right-click on Foreign Keys and select Add New Foreign Key.

Add a foreign key in Table Designer in Visual Studio

Add a foreign key in Table Designer in Visual Studio

CONSTRAINT [FK_Orders_Customers] FOREIGN KEY ([CustomerID]) REFERENCES [Customers]([CustomerID]) 

Populate the tables with data

  1. In Server Explorer or SQL Server Object Explorer, expand the node for the sample database.
  2. Open the shortcut menu for the Tables node, select Refresh, and then expand the Tables node.
  3. Open the shortcut menu for the Customers table, and then select Show Table Data or View Data.
  4. Add whatever data you want for some customers. You can specify any five characters you want as the customer IDs, but choose at least one that you can remember for use later in this procedure.
  5. Open the shortcut menu for the Orders table, and then select Show Table Data or View Data.
  6. Add data for some orders. As you enter each row, it’s saved in the database.

Important Make sure that all order IDs and order quantities are integers and that each customer ID matches a value that you specified in the CustomerID column of the Customers table.

Congratulations! You now know how to create tables, link them with a foreign key, and add data.

Related content

Вставка новых записей в базу данных в приложениях платформа .NET Framework

Область применения:yesVisual Studio Visual Studio для Mac noVisual Studio Code no

Наборы данных и связанные классы являются устаревшими технологиями платформа .NET Framework с начала 2000-х годов, которые позволяют приложениям работать с данными в памяти во время отключения приложений от базы данных. Они особенно полезны для приложений, которые позволяют пользователям изменять данные и сохранять изменения обратно в базу данных. Хотя наборы данных оказались очень успешными, мы рекомендуем новым приложениям .NET использовать Entity Framework Core. Entity Framework предоставляет более естественный способ работы с табличными данными в виде объектных моделей, и он имеет более простой интерфейс программирования.

Чтобы вставить новые записи в базу данных с ADO.NET в проекте платформа .NET Framework, можно использовать TableAdapter.Update метод или один из методов DBDirect TableAdapter (в частности TableAdapter.Insert , метод). Дополнительные сведения см. в статье TableAdapter.

Если приложение не использует TableAdapters, можно использовать объекты команд (например, SqlCommandдля вставки новых записей в базу данных).

Если приложение использует наборы данных для хранения данных, используйте TableAdapter.Update этот метод. Метод Update отправляет все изменения (обновления, вставки и удаления) в базу данных.

Если приложение использует объекты для хранения данных или требуется более точное управление созданием новых записей в базе данных, используйте TableAdapter.Insert этот метод.

Если в TableAdapter нет Insert метода, это означает, что параметр TableAdapter настроен на использование хранимых процедур или GenerateDBDirectMethods его свойство имеет значение false . Попробуйте задать для свойства true TableAdapter GenerateDBDirectMethods значение из конструктора наборов данных, а затем сохранить набор данных. Это действие повторно создает TableAdapter. Если tableAdapter по-прежнему не имеет Insert метода, таблица, вероятно, не предоставляет достаточно сведений о схеме, чтобы различать отдельные строки (например, в таблице может быть не задан первичный ключ).

Эта статья относится к ADO.NET и разработке платформа .NET Framework. Для той же задачи с Entity Framework 6 см. статью «Добавление новой сущности в контекст». Сведения о Entity Framework Core см. в разделе «Добавление данных».

Вставка новых записей с помощью TableAdapters

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

Если приложение использует наборы данных для хранения данных, можно добавить новые записи в нужный DataTable набор данных, а затем вызвать TableAdapter.Update метод. Метод TableAdapter.Update отправляет все изменения в DataTable базу данных (включая измененные и удаленные записи).

Вставка новых записей в базу данных с помощью метода TableAdapter.Update

  1. Добавьте новые записи в нужное DataTable , создав новую DataRow и добавив ее в коллекцию Rows .
  2. После добавления новых строк в DataTableметод вызовите TableAdapter.Update метод. Вы можете управлять объемом данных для обновления путем передачи всего DataSetмассива DataTableили одного DataRowмассиваDataRow. В следующем коде показано, как добавить новую запись в базу DataTable данных, а затем вызвать TableAdapter.Update метод для сохранения новой строки в базе данных. (В этом примере используется Region таблица в базе данных Northwind.)
// Create a new row. NorthwindDataSet.RegionRow newRegionRow; newRegionRow = northwindDataSet.Region.NewRegionRow(); newRegionRow.RegionID = 5; newRegionRow.RegionDescription = "NorthWestern"; // Add the row to the Region table this.northwindDataSet.Region.Rows.Add(newRegionRow); // Save the new row to the database this.regionTableAdapter.Update(this.northwindDataSet.Region); 
' Create a new row. Dim newRegionRow As NorthwindDataSet.RegionRow newRegionRow = Me.NorthwindDataSet._Region.NewRegionRow() newRegionRow.RegionID = 5 newRegionRow.RegionDescription = "NorthWestern" ' Add the row to the Region table Me.NorthwindDataSet._Region.Rows.Add(newRegionRow) ' Save the new row to the database Me.RegionTableAdapter.Update(Me.NorthwindDataSet._Region) 

Вставка новых записей в базу данных с помощью метода TableAdapter.Insert

Если приложение использует объекты для хранения данных, можно использовать TableAdapter.Insert метод для создания новых строк непосредственно в базе данных. Метод Insert принимает отдельные значения для каждого столбца в качестве параметров. Вызов метода вставляет новую запись в базу данных со значениями параметров, переданными в.

  • Вызовите метод TableAdapter Insert , передавая значения для каждого столбца в качестве параметров.

Следующая процедура демонстрирует использование TableAdapter.Insert метода для вставки строк. В этом примере данные вставляются в таблицу Region в базе данных Northwind.

Если у вас нет доступного экземпляра, создайте экземпляр TableAdapter, который вы хотите использовать.

NorthwindDataSetTableAdapters.RegionTableAdapter regionTableAdapter = new NorthwindDataSetTableAdapters.RegionTableAdapter(); regionTableAdapter.Insert(5, "NorthWestern"); 
Dim regionTableAdapter As New NorthwindDataSetTableAdapters.RegionTableAdapter regionTableAdapter.Insert(5, "NorthWestern") 

Вставка новых записей с помощью объектов команд

Новые записи можно вставлять непосредственно в базу данных с помощью объектов команд.

Вставка новых записей в базу данных с помощью объектов команд

  • Создайте объект команды, а затем задайте его Connection CommandType свойства и CommandText свойства.

В следующем примере показано вставка записей в базу данных с помощью объекта команды. Он вставляет данные в таблицу Region в базе данных Northwind.

System.Data.SqlClient.SqlConnection sqlConnection1 = new System.Data.SqlClient.SqlConnection("YOUR CONNECTION STRING"); System.Data.SqlClient.SqlCommand cmd = new System.Data.SqlClient.SqlCommand(); cmd.CommandType = System.Data.CommandType.Text; cmd.CommandText = "INSERT Region (RegionID, RegionDescription) VALUES (5, 'NorthWestern')"; cmd.Connection = sqlConnection1; sqlConnection1.Open(); cmd.ExecuteNonQuery(); sqlConnection1.Close(); 
Dim sqlConnection1 As New System.Data.SqlClient.SqlConnection("YOUR CONNECTION STRING") Dim cmd As New System.Data.SqlClient.SqlCommand cmd.CommandType = System.Data.CommandType.Text cmd.CommandText = "INSERT Region (RegionID, RegionDescription) VALUES (5, 'NorthWestern')" cmd.Connection = sqlConnection1 sqlConnection1.Open() cmd.ExecuteNonQuery() sqlConnection1.Close() 

Безопасность в .NET

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

Связанный контент

Создание простого приложения для работы с данными с помощью ADO.NET

Область применения:yesVisual Studio Visual Studio для Mac noVisual Studio Code no

Наборы данных и связанные классы являются устаревшими технологиями платформа .NET Framework с начала 2000-х годов, которые позволяют приложениям работать с данными в памяти во время отключения приложений от базы данных. Они особенно полезны для приложений, которые позволяют пользователям изменять данные и сохранять изменения обратно в базу данных. Хотя наборы данных оказались очень успешными, мы рекомендуем новым приложениям .NET использовать Entity Framework Core. Entity Framework предоставляет более естественный способ работы с табличными данными в виде объектных моделей, и он имеет более простой интерфейс программирования.

При создании приложения, которое работает с данными в базе данных, необходимо выполнить такие основные задачи, как определение строк подключения, вставка данных и выполнение хранимых процедур. Следуя этому разделу, вы можете узнать, как взаимодействовать с базой данных из простого приложения Windows Forms по данным с помощью Visual C# или Visual Basic и ADO.NET. Все технологии данных .NET, включая наборы данных, LINQ to SQL и Entity Framework, в конечном счете выполняют действия, которые очень похожи на приведенные в этой статье.

В этой статье демонстрируется простой способ быстрого получения данных из базы данных. Если приложению необходимо изменить данные в нетривиальных способах и обновить базу данных, следует рассмотреть возможность использования Entity Framework и использования привязки данных для автоматической синхронизации элементов управления пользовательским интерфейсом с изменениями в базовых данных.

С целью упрощения код не включает обработку исключений для выполнения в рабочей среде.

Полный код для этого руководства можно получить в репозитории GitHub в Visual Studio в C# и Visual Basic.

Необходимые компоненты

Чтобы создать приложение, вам потребуется:

  • Visual Studio с установленными рабочими нагрузками разработки классических приложений .NET и хранилища данных и обработки. Чтобы установить их, откройте Visual Studio Installer и нажмите кнопку «Изменить» (или «Изменить >«) рядом с версией Visual Studio, которую вы хотите изменить.
  • SQL Server Express LocalDB. Если у вас нет SQL Server Express LocalDB, его можно установить на странице загрузки SQL Server.

В этом разделе предполагается, что вы знакомы с основными функциями интегрированной среды разработки Visual Studio и можете создавать приложения Windows Forms, добавлять формы в проект, помещать кнопки и другие элементы управления в формы, задавать свойства элементов управления и кодировать простые события. Если вы не знакомы с этими задачами, мы рекомендуем завершить создание приложения Windows Forms в Visual Studio с помощью руководства по Visual Basic или создать приложение Windows Forms в Visual Studio с помощью руководства по C# , прежде чем начать это пошаговое руководство.

Настройка образца базы данных

Создайте образец базы данных, выполнив следующие действия.

  1. В Visual Studio откройте окно Обозреватель сервера.
  2. Щелкните правой кнопкой мыши Подключение данных и выберите «Создать базу данных SQL Server».
  3. В текстовом поле имени сервера введите (localdb)\mssqllocaldb.
  4. В текстовом поле «Новое имя базы данных» введите sales, а затем нажмите кнопку «ОК«. Пустая база данных sales создается и добавляется в узел data Подключение ions в сервере Обозреватель.
  5. Щелкните правой кнопкой мыши подключение к данным о продажах и выберите «Создать запрос«. Откроется окно редактора запросов.
  6. Скопируйте скрипт Sales Transact-SQL в буфер обмена.
  7. Вставьте скрипт T-SQL в редактор запросов и нажмите кнопку «Выполнить «. Через некоторое время запрос завершает выполнение и создаются объекты базы данных. База данных содержит две таблицы: Customer и Orders. Эти таблицы изначально не содержат данных, но при запуске создаваемого приложения можно добавить данные. База данных также содержит четыре простых хранимых процедуры.

Создание форм и добавление элементов управления

  1. Создайте проект C# или Visual Basic с помощью шаблона приложения Windows Forms (платформа .NET Framework), а затем назовите его SimpleDataApp. Visual Studio создает проект и несколько файлов, включая пустую форму Windows Forms с именем Form1.
  2. Добавьте две формы Windows Forms в проект, чтобы он включал три формы, и назначьте им следующие имена:
    • Переходы
    • NewCustomer
    • FillOrCancel
  3. Для каждой формы добавьте текстовые поля, кнопки и другие элементы управления, которые отображаются на рисунках ниже. Для каждого элемента управления задайте свойства, указанные в таблицах.

Примечание. Элементы управления «группа» и «надпись» обеспечивают большую ясность, но не используются в коде.

Форма навигацииNavigation dialog box

Элементы управления формы навигации Свойства
Button Name = btnGoToAdd
Button Name = btnGoToFillOrCancel
Button Name = btnExit

Форма NewCustomer

Add a new customer and place an order

Форма FillOrCancel

fill or cancel orders

Сохранение строки подключения

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

Вы можете найти строка подключения, щелкнув правой кнопкой мыши подключение к данным о продажах в сервере Обозреватель и выбрав свойства. Найдите свойство Подключение ionString, а затем нажмите клавиши CTRL+A, CTRL+C, чтобы выбрать и скопировать строку в буфер обмена.

Screenshot of Connection String in Settings.settings

  1. Если вы используете C#, в Обозреватель решений разверните узел свойств в проекте и откройте файл Параметры.settings. Если вы используете Visual Basic, в Обозреватель решений щелкните «Показать все файлы«, разверните узел «Мой проект» и откройте файл Параметры.settings.
  2. В столбце «Имя» введите connString .
  3. В списке «Тип« выберите (Подключение ion String).
  4. В списке областей выберите «Приложение«.
  5. В столбце «Значение» введите строка подключения (без каких-либо внешних кавычек), а затем сохраните изменения.

В реальном приложении необходимо безопасно хранить строка подключения, как описано в строках Подключение ion и файлах конфигурации.

Написание кода для форм

В этом разделе содержатся краткие сведения о том, что делает каждая форма. Он также предоставляет код, определяющий базовую логику при нажатии кнопки в форме.

Форма навигации

Форма навигации открывается при запуске приложения. Кнопка Добавить учетную запись открывает форму NewCustomer. Кнопка Выполнение или отмена заказов открывает форму FillOrCancel. Кнопка Выход закрывает приложение.

Преобразование формы навигации в начальную форму

При использовании C# в обозревателе решений откройте файл Program.cs и измените строку Application.Run на следующую: Application.Run(new Navigation());

Если вы используете Visual Basic, в Обозреватель решений откройте окно «Свойства«, перейдите на вкладку «Приложение«, а затем выберите SimpleDataApp.Navigation в списке форм запуска.

Создание обработчиков событий автоматического создания

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

Если вы пропустите действие двойного щелчка в конструкторе и просто скопируйте код и вставьте его в файлы кода, не забудьте задать обработчик событий правильным методом. Это можно сделать в окне «Свойства «. Перейдите на вкладку «События» (используйте кнопку панели инструментов молнии) и найдите обработчик щелчка .

Добавление кода для логики формы навигации

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

/// /// Opens the NewCustomer form as a dialog box, /// which returns focus to the calling form when it is closed. /// private void btnGoToAdd_Click(object sender, EventArgs e) < Form frm = new NewCustomer(); frm.Show(); >/// /// Opens the FillorCancel form as a dialog box. /// private void btnGoToFillOrCancel_Click(object sender, EventArgs e) < Form frm = new FillOrCancel(); frm.ShowDialog(); >/// /// Closes the application (not just the Navigation form). /// private void btnExit_Click(object sender, EventArgs e)
''' ''' Opens the NewCustomer form as a dialog box, which returns focus to the calling form when it closes. ''' Private Sub btnGoToAdd_Click(sender As Object, e As EventArgs) Handles btnGoToAdd.Click Dim frm As Form = New NewCustomer() frm.Show() End Sub ''' ''' Opens the FillOrCancel form as a dialog box. ''' Private Sub btnGoToFillOrCancel_Click(sender As Object, e As EventArgs) Handles btnGoToFillOrCancel.Click Dim frm As Form = New FillOrCancel() frm.ShowDialog() End Sub ''' ''' Closes the application (not just the navigation form). ''' Private Sub btnExit_Click(sender As Object, e As EventArgs) Handles btnExit.Click Me.Close() End Sub 

Код для этого руководства доступен в C# и Visual Basic. Чтобы переключить язык кода на этой странице между C# и Visual Basic, используйте переключатель языка кода в верхней части каждого примера кода.

Форма NewCustomer

При вводе имени клиента и нажатии кнопки «Создать учетную запись » форма NewCustomer создает учетную запись клиента, а SQL Server возвращает значение IDENTITY в качестве нового идентификатора клиента. Затем вы можете разместить заказ для новой учетной записи, указав сумму и дату заказа и нажав кнопку «Заказ места «.

Создание обработчиков событий автоматического создания

Создайте пустой обработчик событий Click для каждой кнопки в форме NewCustomer, дважды щелкнув каждую из четырех кнопок. Дважды щелкнув кнопки, также добавляет автоматически созданный код в файл кода конструктора, который позволяет нажатию кнопки вызывать событие.

Добавление кода для логики формы NewCustomer

Чтобы завершить логику формы NewCustomer, выполните следующие действия.

System.Data.SqlClient Доведите пространство имен в область, чтобы вам не нужно полностью квалифицировать имена его членов.

using System.Data.SqlClient; 
Imports System.Data.SqlClient 

Добавьте в класс некоторые переменные и вспомогательные методы, как показано в следующем коде.

// Storage for IDENTITY values returned from database. private int parsedCustomerID; private int orderID; /// /// Verifies that the customer name text box is not empty. /// private bool IsCustomerNameValid() < if (txtCustomerName.Text == "") < MessageBox.Show("Please enter a name."); return false; >else < return true; >> /// /// Verifies that a customer ID and order amount have been provided. /// private bool IsOrderDataValid() < // Verify that CustomerID is present. if (txtCustomerID.Text == "") < MessageBox.Show("Please create customer account before placing order."); return false; >// Verify that Amount isn't 0. else if ((numOrderAmount.Value < 1)) < MessageBox.Show("Please specify an order amount."); return false; >else < // Order can be submitted. return true; >> /// /// Clears the form data. /// private void ClearForm()
' Storage for ID values returned from the database. Private parsedCustomerID As Integer Private orderID As Integer ''' ''' Verifies that the customer name text box is not empty. ''' Private ReadOnly Property IsCustomerNameValid As Boolean Get If txtCustomerName.Text = "" Then MessageBox.Show("Please enter a name.") Return False Else Return True End If End Get End Property ''' ''' Verifies the order data is valid. ''' Private Function IsOrderDataValid() As Boolean ' Verify that CustomerID is present. If txtCustomerID.Text = "" Then MessageBox.Show("Please create a customer account before placing order.") Return False ' Verify that order amount isn't 0. ElseIf (numOrderAmount.Value < 1) Then MessageBox.Show("Please specify an order amount.") Return False Else ' Order can be submitted. Return True End If End Function ''' ''' Clears values from controls. ''' Private Sub ClearForm() txtCustomerName.Clear() txtCustomerID.Clear() dtpOrderDate.Value = DateTime.Now numOrderAmount.Value = 0 Me.parsedCustomerID = 0 End Sub 

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

/// /// Creates a new customer by calling the Sales.uspNewCustomer stored procedure. /// private void btnCreateAccount_Click(object sender, EventArgs e) < if (IsCustomerNameValid()) < // Create the connection. using (SqlConnection connection = new SqlConnection(Properties.Settings.Default.connString)) < // Create a SqlCommand, and identify it as a stored procedure. using (SqlCommand sqlCommand = new SqlCommand("Sales.uspNewCustomer", connection)) < sqlCommand.CommandType = CommandType.StoredProcedure; // Add input parameter for the stored procedure and specify what to use as its value. sqlCommand.Parameters.Add(new SqlParameter("@CustomerName", SqlDbType.NVarChar, 40)); sqlCommand.Parameters["@CustomerName"].Value = txtCustomerName.Text; // Add the output parameter. sqlCommand.Parameters.Add(new SqlParameter("@CustomerID", SqlDbType.Int)); sqlCommand.Parameters["@CustomerID"].Direction = ParameterDirection.Output; try < connection.Open(); // Run the stored procedure. sqlCommand.ExecuteNonQuery(); // Customer ID is an IDENTITY value from the database. this.parsedCustomerID = (int)sqlCommand.Parameters["@CustomerID"].Value; // Put the Customer ID value into the read-only text box. this.txtCustomerID.Text = Convert.ToString(parsedCustomerID); >catch < MessageBox.Show("Customer ID was not returned. Account could not be created."); >finally < connection.Close(); >> > > > /// /// Calls the Sales.uspPlaceNewOrder stored procedure to place an order. /// private void btnPlaceOrder_Click(object sender, EventArgs e) < // Ensure the required input is present. if (IsOrderDataValid()) < // Create the connection. using (SqlConnection connection = new SqlConnection(Properties.Settings.Default.connString)) < // Create SqlCommand and identify it as a stored procedure. using (SqlCommand sqlCommand = new SqlCommand("Sales.uspPlaceNewOrder", connection)) < sqlCommand.CommandType = CommandType.StoredProcedure; // Add the @CustomerID input parameter, which was obtained from uspNewCustomer. sqlCommand.Parameters.Add(new SqlParameter("@CustomerID", SqlDbType.Int)); sqlCommand.Parameters["@CustomerID"].Value = this.parsedCustomerID; // Add the @OrderDate input parameter. sqlCommand.Parameters.Add(new SqlParameter("@OrderDate", SqlDbType.DateTime, 8)); sqlCommand.Parameters["@OrderDate"].Value = dtpOrderDate.Value; // Add the @Amount order amount input parameter. sqlCommand.Parameters.Add(new SqlParameter("@Amount", SqlDbType.Int)); sqlCommand.Parameters["@Amount"].Value = numOrderAmount.Value; // Add the @Status order status input parameter. // For a new order, the status is always O (open). sqlCommand.Parameters.Add(new SqlParameter("@Status", SqlDbType.Char, 1)); sqlCommand.Parameters["@Status"].Value = "O"; // Add the return value for the stored procedure, which is the order ID. sqlCommand.Parameters.Add(new SqlParameter("@RC", SqlDbType.Int)); sqlCommand.Parameters["@RC"].Direction = ParameterDirection.ReturnValue; try < //Open connection. connection.Open(); // Run the stored procedure. sqlCommand.ExecuteNonQuery(); // Display the order number. this.orderID = (int)sqlCommand.Parameters["@RC"].Value; MessageBox.Show("Order number " + this.orderID + " has been submitted."); >catch < MessageBox.Show("Order could not be placed."); >finally < connection.Close(); >> > > > /// /// Clears the form data so another new account can be created. /// private void btnAddAnotherAccount_Click(object sender, EventArgs e) < this.ClearForm(); >/// /// Closes the form/dialog box. /// private void btnAddFinish_Click(object sender, EventArgs e)
''' ''' Creates a new account by executing the Sales.uspNewCustomer ''' stored procedure on the database. ''' Private Sub btnCreateAccount_Click(sender As Object, e As EventArgs) Handles btnCreateAccount.Click ' Ensure a customer name has been entered. If IsCustomerNameValid Then ' Create the SqlConnection object. Using connection As New SqlConnection(My.Settings.connString) ' Create a SqlCommand, and identify the command type as a stored procedure. Using sqlCommand As New SqlCommand("Sales.uspNewCustomer", connection) sqlCommand.CommandType = CommandType.StoredProcedure ' Add the customer name input parameter for the stored procedure. sqlCommand.Parameters.Add(New SqlParameter("@CustomerName", SqlDbType.NVarChar, 40)) sqlCommand.Parameters("@CustomerName").Value = txtCustomerName.Text ' Add the customer ID output parameter. sqlCommand.Parameters.Add(New SqlParameter("@CustomerID", SqlDbType.Int)) sqlCommand.Parameters("@CustomerID").Direction = ParameterDirection.Output Try ' Open the connection. connection.Open() ' Run the stored procedure. sqlCommand.ExecuteNonQuery() ' Convert the Customer ID value to an Integer. Me.parsedCustomerID = CInt(sqlCommand.Parameters("@CustomerID").Value) ' Insert the customer ID into the corresponding text box. Me.txtCustomerID.Text = Convert.ToString(parsedCustomerID) Catch MessageBox.Show("Customer ID was not returned. Account could not be created.") Finally ' Close the connection. connection.Close() End Try End Using End Using End If End Sub ''' ''' Places the order by executing the Sales.uspPlaceNewOrder ''' stored procedure on the database. ''' Private Sub btnPlaceOrder_Click(sender As Object, e As EventArgs) Handles btnPlaceOrder.Click If IsOrderDataValid() Then ' Create the connection. Using connection As New SqlConnection(My.Settings.connString) ' Create SqlCommand and identify it as a stored procedure. Using sqlCommand As New SqlCommand("Sales.uspPlaceNewOrder", connection) sqlCommand.CommandType = CommandType.StoredProcedure ' Add the @CustomerID parameter, which was an output parameter from uspNewCustomer. sqlCommand.Parameters.Add(New SqlParameter("@CustomerID", SqlDbType.Int)) sqlCommand.Parameters("@CustomerID").Value = Me.parsedCustomerID ' Add the @OrderDate parameter. sqlCommand.Parameters.Add(New SqlParameter("@OrderDate", SqlDbType.DateTime, 8)) sqlCommand.Parameters("@OrderDate").Value = dtpOrderDate.Value ' Add the @Amount parameter. sqlCommand.Parameters.Add(New SqlParameter("@Amount", SqlDbType.Int)) sqlCommand.Parameters("@Amount").Value = numOrderAmount.Value ' Add the @Status parameter. For a new order, the status is always O (open). sqlCommand.Parameters.Add(New SqlParameter("@Status", SqlDbType.[Char], 1)) sqlCommand.Parameters("@Status").Value = "O" ' Add a return value parameter for the stored procedure, which is the orderID. sqlCommand.Parameters.Add(New SqlParameter("@RC", SqlDbType.Int)) sqlCommand.Parameters("@RC").Direction = ParameterDirection.ReturnValue Try ' Open connection. connection.Open() ' Run the stored procedure. sqlCommand.ExecuteNonQuery() ' Display the order number. Me.orderID = CInt(sqlCommand.Parameters("@RC").Value) MessageBox.Show("Order number " & (Me.orderID).ToString & " has been submitted.") Catch ' A simple catch. MessageBox.Show("Order could not be placed.") Finally ' Always close a connection after you finish using it, ' so that it can be released to the connection pool. connection.Close() End Try End Using End Using End If End Sub ''' ''' Resets the form for another new account. ''' Private Sub btnAddAnotherAccount_Click(sender As Object, e As EventArgs) Handles btnAddAnotherAccount.Click Me.ClearForm() End Sub ''' ''' Closes the NewCustomer form and returns focus to the Navigation form. ''' Private Sub btnAddFinish_Click(sender As Object, e As EventArgs) Handles btnAddFinish.Click Me.Close() End Sub 

Форма FillOrCancel

Форма FillOrCancel запускает запрос, чтобы вернуть заказ при вводе идентификатора заказа, а затем нажмите кнопку «Найти заказ «. Возвращенная строка отображается в сетке данных только для чтения. Вы можете пометить заказ как отмененный (X), если нажмите кнопку «Отмена заказа «, или вы можете пометить заказ как заполненный (F) при нажатии кнопки «Заказ заполнения «. Если снова выбрать кнопку «Найти заказ «, появится обновленная строка.

Создание обработчиков событий автоматического создания

Создайте пустые обработчики событий Click для четырех кнопок в форме FillOrCancel, дважды щелкнув кнопки. Дважды щелкнув кнопки, также добавляет автоматически созданный код в файл кода конструктора, который позволяет нажатию кнопки вызывать событие.

Добавление кода для логики формы FillOrCancel

Чтобы завершить логику формы FillOrCancel, выполните следующие действия.

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

using System.Data.SqlClient; using System.Text.RegularExpressions; 
Imports System.Data.SqlClient Imports System.Text.RegularExpressions 

Добавьте в класс переменную и вспомогательный метод, как показано в следующем коде.

// Storage for the order ID value. private int parsedOrderID; /// /// Verifies that an order ID is present and contains valid characters. /// private bool IsOrderIDValid() < // Check for input in the Order ID text box. if (txtOrderID.Text == "") < MessageBox.Show("Please specify the Order ID."); return false; >// Check for characters other than integers. else if (Regex.IsMatch(txtOrderID.Text, @"^\D*$")) < // Show message and clear input. MessageBox.Show("Customer ID must contain only numbers."); txtOrderID.Clear(); return false; >else < // Convert the text in the text box to an integer to send to the database. parsedOrderID = Int32.Parse(txtOrderID.Text); return true; >> 
' Storage for OrderID. Private parsedOrderID As Integer ''' ''' Verifies that OrderID is valid. ''' Private Function IsOrderIDValid() As Boolean ' Check for input in the Order ID text box. If txtOrderID.Text = "" Then MessageBox.Show("Please specify the Order ID.") Return False ' Check for characters other than integers. ElseIf Regex.IsMatch(txtOrderID.Text, "^\D*$") Then ' Show message and clear input. MessageBox.Show("Please specify integers only.") txtOrderID.Clear() Return False Else ' Convert the text in the text box to an integer to send to the database. parsedOrderID = Int32.Parse(txtOrderID.Text) Return True End If End Function 

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

/// /// Executes a t-SQL SELECT statement to obtain order data for a specified /// order ID, then displays it in the DataGridView on the form. /// private void btnFindByOrderID_Click(object sender, EventArgs e) < if (IsOrderIDValid()) < using (SqlConnection connection = new SqlConnection(Properties.Settings.Default.connString)) < // Define a t-SQL query string that has a parameter for orderID. const string sql = "SELECT * FROM Sales.Orders WHERE orderID = @orderID"; // Create a SqlCommand object. using (SqlCommand sqlCommand = new SqlCommand(sql, connection)) < // Define the @orderID parameter and set its value. sqlCommand.Parameters.Add(new SqlParameter("@orderID", SqlDbType.Int)); sqlCommand.Parameters["@orderID"].Value = parsedOrderID; try < connection.Open(); // Run the query by calling ExecuteReader(). using (SqlDataReader dataReader = sqlCommand.ExecuteReader()) < // Create a data table to hold the retrieved data. DataTable dataTable = new DataTable(); // Load the data from SqlDataReader into the data table. dataTable.Load(dataReader); // Display the data from the data table in the data grid view. this.dgvCustomerOrders.DataSource = dataTable; // Close the SqlDataReader. dataReader.Close(); >> catch < MessageBox.Show("The requested order could not be loaded into the form."); >finally < // Close the connection. connection.Close(); >> > > > /// /// Cancels an order by calling the Sales.uspCancelOrder /// stored procedure on the database. /// private void btnCancelOrder_Click(object sender, EventArgs e) < if (IsOrderIDValid()) < // Create the connection. using (SqlConnection connection = new SqlConnection(Properties.Settings.Default.connString)) < // Create the SqlCommand object and identify it as a stored procedure. using (SqlCommand sqlCommand = new SqlCommand("Sales.uspCancelOrder", connection)) < sqlCommand.CommandType = CommandType.StoredProcedure; // Add the order ID input parameter for the stored procedure. sqlCommand.Parameters.Add(new SqlParameter("@orderID", SqlDbType.Int)); sqlCommand.Parameters["@orderID"].Value = parsedOrderID; try < // Open the connection. connection.Open(); // Run the command to execute the stored procedure. sqlCommand.ExecuteNonQuery(); >catch < MessageBox.Show("The cancel operation was not completed."); >finally < // Close connection. connection.Close(); >> > > > /// /// Fills an order by calling the Sales.uspFillOrder stored /// procedure on the database. /// private void btnFillOrder_Click(object sender, EventArgs e) < if (IsOrderIDValid()) < // Create the connection. using (SqlConnection connection = new SqlConnection(Properties.Settings.Default.connString)) < // Create command and identify it as a stored procedure. using (SqlCommand sqlCommand = new SqlCommand("Sales.uspFillOrder", connection)) < sqlCommand.CommandType = CommandType.StoredProcedure; // Add the order ID input parameter for the stored procedure. sqlCommand.Parameters.Add(new SqlParameter("@orderID", SqlDbType.Int)); sqlCommand.Parameters["@orderID"].Value = parsedOrderID; // Add the filled date input parameter for the stored procedure. sqlCommand.Parameters.Add(new SqlParameter("@FilledDate", SqlDbType.DateTime, 8)); sqlCommand.Parameters["@FilledDate"].Value = dtpFillDate.Value; try < connection.Open(); // Execute the stored procedure. sqlCommand.ExecuteNonQuery(); >catch < MessageBox.Show("The fill operation was not completed."); >finally < // Close the connection. connection.Close(); >> > > > /// /// Closes the form. /// private void btnFinishUpdates_Click(object sender, EventArgs e)
''' ''' Executes a t-SQL SELECT query on the database to ''' obtain order data for a specified order ID. ''' Private Sub btnFindByOrderID_Click(sender As Object, e As EventArgs) Handles btnFindByOrderID.Click ' Prepare the connection and the command. If IsOrderIDValid() Then ' Create the connection. Using connection As New SqlConnection(My.Settings.connString) ' Define the query string that has a parameter for orderID. Const sql As String = "select * from Sales.Orders where orderID = @orderID" ' Create a SqlCommand object. Using sqlCommand As New SqlCommand(sql, connection) ' Define the @orderID parameter and its value. sqlCommand.Parameters.Add(New SqlParameter("@orderID", SqlDbType.Int)) sqlCommand.Parameters("@orderID").Value = parsedOrderID Try ' Open connection. connection.Open() ' Execute the query. Dim dataReader As SqlDataReader = sqlCommand.ExecuteReader() ' Create a data table to hold the retrieved data. Dim dataTable As New DataTable() ' Load the data from SqlDataReader into the data table. dataTable.Load(dataReader) ' Display the data from the data table in the data grid view. Me.dgvCustomerOrders.DataSource = dataTable ' Close the SqlDataReader. dataReader.Close() Catch MessageBox.Show("The requested order could not be loaded into the form.") Finally ' Close the connection. connection.Close() End Try End Using End Using End If End Sub ''' ''' Fills an order by running the Sales.uspFillOrder stored procedure on the database. ''' Private Sub btnFillOrder_Click(sender As Object, e As EventArgs) Handles btnFillOrder.Click ' Set up and run stored procedure only if OrderID is valid. If IsOrderIDValid() Then ' Create the connection. Using connection As New SqlConnection(My.Settings.connString) ' Create command and identify it as a stored procedure. Using sqlCommand As New SqlCommand("Sales.uspFillOrder", connection) sqlCommand.CommandType = CommandType.StoredProcedure ' Add input parameter for the stored procedure. sqlCommand.Parameters.Add(New SqlParameter("@orderID", SqlDbType.Int)) sqlCommand.Parameters("@orderID").Value = parsedOrderID ' Add second input parameter. sqlCommand.Parameters.Add(New SqlParameter("@FilledDate", SqlDbType.DateTime, 8)) sqlCommand.Parameters("@FilledDate").Value = dtpFillDate.Value Try ' Open the connection. connection.Open() ' Run the SqlCommand. sqlCommand.ExecuteNonQuery() Catch ' A simple catch. MessageBox.Show("The fill operation was not completed.") Finally ' Close the connection. connection.Close() End Try End Using End Using End If End Sub ''' ''' Cancels an order by running the Sales.uspCancelOrder stored procedure on the database. ''' Private Sub btnCancelOrder_Click(sender As Object, e As EventArgs) Handles btnCancelOrder.Click ' Set up and run the stored procedure only if OrderID is ready. If IsOrderIDValid() Then ' Create the connection. Using connection As New SqlConnection(My.Settings.connString) ' Create the command and identify it as a stored procedure. Using sqlCommand As New SqlCommand("Sales.uspCancelOrder", connection) sqlCommand.CommandType = CommandType.StoredProcedure ' Add input parameter for the stored procedure. sqlCommand.Parameters.Add(New SqlParameter("@orderID", SqlDbType.Int)) sqlCommand.Parameters("@orderID").Value = parsedOrderID Try ' Open the connection. connection.Open() ' Run the SqlCommand. sqlCommand.ExecuteNonQuery() Catch ' A simple catch. MessageBox.Show("The cancel operation was not completed.") Finally ' Close connection. connection.Close() End Try End Using End Using End If End Sub ''' ''' Closes the form and returns focus to the Navigation form. ''' Private Sub btnFinishUpdates_Click(sender As Object, e As EventArgs) Handles btnFinishUpdates.Click Me.Close() End Sub 

Тестирование приложения

Запустите приложение и попробуйте создать несколько клиентов и заказов, чтобы убедиться, что все работает должным образом. Чтобы убедиться, что база данных обновлена с изменениями, откройте узел таблиц на сервере Обозреватель, щелкните правой кнопкой мыши узлы «Клиенты и заказы» и выберите «Показать данные таблицы».

Связанный контент

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

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