Содержание
В этом кратком руководстве показано, как использовать платформу .NET и код C# в Visual Studio для отправки запросов к базе данных SQL Azure с помощью инструкций Transact-SQL. This quickstart shows how to use the .NET framework and C# code in Visual Studio to query an Azure SQL database with Transact-SQL statements.
предварительные требования Prerequisites
Для работы с этим кратким руководством вам понадобится: To complete this quickstart, you need:
База данных SQL Azure. An Azure SQL database. Для создания и настройки базы данных в службе "База данных SQL Azure" можно использовать одно из этих кратких руководств. You can use one of these quickstarts to create and then configure a database in Azure SQL Database:
Отдельная база данных Single database | управляемый экземпляр Managed instance | |
---|---|---|
Создание Create | Портал Portal | Портал Portal |
CLI CLI | CLI CLI | |
PowerShell PowerShell | PowerShell PowerShell | |
Configure Configure | Правило брандмауэра для IP-адресов на уровне сервера Server-level IP firewall rule | Подключение из виртуальной машины Connectivity from a VM |
Подключение "точка — сеть" Connectivity from on-site | ||
Загрузка данных Load data | База данных Adventure Works, загруженная для краткого руководства Adventure Works loaded per quickstart | Восстановление базы данных Wide World Importers Restore Wide World Importers |
Восстановление или импорт Adventure Works из файла BACPAC, размещенного на GitHub Restore or import Adventure Works from BACPAC file from GitHub |
Скрипты в этой статье предназначены для использования базы данных Adventure Works. The scripts in this article are written to use the Adventure Works database. Используя управляемый экземпляр, необходимо импортировать базу данных Adventure Works в базу данных экземпляра или изменить скрипты в этой статье для использования базы данных Wide World Importers. With a managed instance, you must either import the Adventure Works database into an instance database or modify the scripts in this article to use the Wide World Importers database.
Visual Studio 2019 — выпуск Community, Professional или Enterprise. Visual Studio 2019 Community, Professional, or Enterprise edition.
Получение сведений о подключении к SQL Server Get SQL server connection information
Получите сведения, необходимые для подключения к базе данных SQL Azure. Get the connection information you need to connect to the Azure SQL database. Для дальнейших действий вам понадобится полное имя сервера или имя узла, имя базы данных и данные для входа. You’ll need the fully qualified server name or host name, database name, and login information for the upcoming procedures.
Войдите на портал Azure. Sign in to the Azure portal.
Перейдите на страницу Базы данных SQL или Управляемые экземпляры SQL. Navigate to the SQL databases or SQL managed instances page.
На странице Обзор просмотрите полное имя сервера рядом с полем Имя сервера для отдельной базы данных или полное имя сервера рядом с полем Узел для управляемого экземпляра. On the Overview page, review the fully qualified server name next to Server name for a single database or the fully qualified server name next to Host for a managed instance. Чтобы скопировать имя сервера или имя узла, наведите на него указатель мыши и щелкните значок копирования. To copy the server name or host name, hover over it and select the Copy icon.
Создание кода для запроса базы данных SQL Create code to query the SQL database
В Visual Studio выберите Файл > Создать > Проект. In Visual Studio, select File > New > Project.
В диалоговом окне Новый проект выберите Visual C# , а затем — Консольное приложение (.NET Framework) . In the New Project dialog, select Visual C#, and then select Console App (.NET Framework).
Введите название проекта sqltest, а затем нажмите кнопку ОК. Enter sqltest for the project name, and then select OK. Создается новый проект. The new project is created.
Выберите Проект > Управление пакетами NuGet. Select Project > Manage NuGet Packages.
В диспетчер пакетов NuGet выберите вкладку Обзор, а затем найдите и выберите System.Data.SqlClient. In NuGet Package Manager, select the Browse tab, then search for and select System.Data.SqlClient.
На странице System.Data.SqlClient щелкните Установить. On the System.Data.SqlClient page, select Install.
- При выводе запроса нажмите кнопку ОК, чтобы продолжить установку. If prompted, select OK to continue with the installation.
- Если откроется окно Прием условий лицензионного соглашения, выберите Я принимаю. If a License Acceptance window appears, select I Accept.
После завершения установки вы можете закрыть диспетчер пакетов NuGet. When the install completes, you can close NuGet Package Manager.
В редакторе кода замените содержимое Program.cs следующим кодом. In the code editor, replace the Program.cs contents with the following code. Замените значения , ,
и . Replace your values for , ,
Данный пример кода использует данные AdventureWorksLT, которые можно выбрать в качестве источника при создании базы данных. The code in this example uses the sample AdventureWorksLT data, which you can choose as source when creating your database. Если в вашей базе данных содержатся другие данные, используйте таблицы из собственной базы данных в запросе SELECT. If your database has different data, use tables from your own database in the SELECT query.
Почему квадратные скобки вместо круглых?
Как писать вложенные запросы?
Студия 2015
2 ответа 2
Квадратные скобки — это "фишка" Transact SQL (диалекта SQL от Microsoft, используемого в Access и SQL Server). Они полностью аналогичны двойным кавычкам:
Введены они в язык для представления идентификаторов которые не могут быть представлены иначе — например, без квадратных скобок (или двойных кавычек) невозможно сослаться на идентификатор который содержит пробел или ключевое слово:
Почему квадратные скобки а не кавычки? Наверное, это придумали чтобы запрос было проще записать внутри строкового литерала. Сравните:
Наконец если вы спросите зачем вообще скобки вокруг идентификатора Table_tovar — то ответ будет "просто так". Очевидно что запрос автогенерированный, и разработчику генератора показалось проще ставить эти скобки всегда вместо того чтобы выяснять нужны ли они вообще. Конкретно ваш запрос можно записать вовсе безо всяких скобок:
Есть несколько совершенно разных и почти не связанных способов получить данные из БД и выдать их в текстбокс, таблицу и тд.
1. Enity framework https://msdn.microsoft.com/en-us/library/ee340709%.
С помощью визарда добавляете подключение к БД, затем выбираете нужные таблички, запросы. И осталось только связать с DataGrid.
Всё делается через различного рода диалоги.
2. Тоже самое, но с использованием утилиты sqlmetal.exe: https://msdn.microsoft.com/en-us/library/bb386987(v=vs.110).aspx
Она генерирует на основе вашей БД .cs файл с описанными классами для доступа. Вам остаётся только добавить его в проект и использовать. Там обязательно есть главный класс (соответствует названию БД), который наследуется от DataContext. Далее используя технологию LINQ to SQL https://msdn.microsoft.com/en-us/library/bb386976(v=vs.110).aspx выполняете запросы так, как будто просто оперируете коллекциями в C#. Результат выполнения запросов можно сразу автоматически расфасовывать по коллекциям, без циклов.
3. ADO .Net классическая. Собственно как я и описал. SqlConnection, SqlCommand и т.д.
Подключаетесь, пишите запрос на SQL, выполняете — получаете результат. Только результат вам надо ручками куда-то разложить.
4. ADO .Net "автоматическая". Используется Dataset, к которому привязаны таблички и другие элементы. Но он не заполняется автоматически. Для того чтобы его наполнить в дополнение к №3 нужен SqlDataAdapter https://msdn.microsoft.com/en-us/library/system.da. (v=vs.110).aspx
который методом Fill заполняет на основе запроса к БД ваш Dataset, а методом Update возвращает изменения в БД.
Остаётся лишь выбрать тот подход который вам нужен и использовать его.
Если вам нужно прочитать/записать несколько значений рекомендую №3..
№4 удобно если у вы используете компоненты, которые работают напрямую с Dataset — разного рода таблички. Обычно это Winforms.
№1, №2 удобно использовать при большом количестве связанных таблиц и сложной логике поиска, а также сложного процесса изменений данных. У вас есть возможность генерировать запросы с помощью Linq, получать ответы сразу в объектах C#. Всё строго и типизировано.