Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Приложение может подключаться непосредственно к базе данных SQL Server, а затем хранить и извлекать данные с помощью классов в пространстве имен System.Data.SqlClient.
Начало работы
В этом руководстве мы покажем, как сделать это в приложениях, использующих Windows App SDK. Если установить образец базы данных Northwind на экземпляр SQL Server, а затем использовать эти фрагменты кода, в конечном итоге вы получите базовый пользовательский интерфейс, в который отображаются продукты из примера базы данных Northwind.
Совет
Вы также можете получить скрипты для создания примерных баз данных Northwind и pubs из репозитория GitHub с примерами SQL Server.
Фрагменты кода, отображаемые в этом руководстве, основаны на этом примере приложения UWP.
Сначала следует настроить решение
Чтобы подключить приложение непосредственно к базе данных SQL Server, приложение может использовать любую минимальную версию Windows, поддерживаемую Windows App SDK. Эти сведения можно найти на странице свойств проекта.
- Откройте файл Package.appxmanifest проекта Windows App SDK в конструкторе манифестов.
- На вкладке Capabilities установите флажок Enterprise Authentication, если вы используете проверку подлинности Windows для аутентификации вашего SQL Server.
Внимание
Вам также потребуется выбрать
Добавление и получение данных в базе данных SQL Server
В этом разделе будут выполнены следующие действия:
1️⃣ Добавьте строку подключения.
2️⃣ Создание класса для хранения данных продукта.
3️⃣ Получение продуктов из базы данных SQL Server.
4️⃣ Добавление базового пользовательского интерфейса.
5️⃣ Заполнение пользовательского интерфейса продуктами.
Примечание.
В этом разделе показан один из способов организации кода доступа к данным. Он предназначен только для предоставления примера использования System.Data.SqlClient для хранения и извлечения данных из базы данных SQL Server. Код можно организовывать таким образом, который лучше всего подходит для проекта приложения.
Добавление строки подключения
В файле App.xaml.cs добавьте свойство в класс App, которое предоставляет другим классам в вашем решении доступ к строке подключения.
Наша строка подключения определяет базу данных Northwind в экземпляре SQL Server Express. В этом фрагменте предполагается, что строка подключения использует имя экземпляра по умолчанию SQLEXPRESS, сохраненное при установке SQL Server Express. Вы можете изменить строку подключения, чтобы она соответствовала вашему экземпляру SQL Server, базе данных и методу проверки подлинности.
sealed partial class App : Application
{
// Connection string for using Windows Authentication.
private string connectionString =
@"Data Source=.\SQLEXPRESS;Initial Catalog=NORTHWIND;Integrated Security=SSPI";
public string ConnectionString { get => connectionString; set => connectionString = value; }
...
}
Внимание
В рабочих приложениях сведения о подключении должны храниться безопасно в конфигурации приложения (см. раздел Добавление конфигурации приложений Azure с помощью подключенных служб Visual Studio). Строки подключения и другие секреты никогда не должны быть жестко закодированы.
Создание класса для хранения данных продукта
Создадим класс, реализующий событие INotifyPropertyChanged, чтобы можно было привязать атрибуты в пользовательском интерфейсе XAML к свойствам этого класса.
public class Product : INotifyPropertyChanged
{
public int ProductID { get; set; }
public string ProductCode { get { return ProductID.ToString(); } }
public string ProductName { get; set; }
public string QuantityPerUnit { get; set; }
public decimal UnitPrice { get; set; }
public string UnitPriceString { get { return UnitPrice.ToString("######.00"); } }
public int UnitsInStock { get; set; }
public string UnitsInStockString { get { return UnitsInStock.ToString("#####0"); } }
public int CategoryId { get; set; }
public event PropertyChangedEventHandler PropertyChanged;
private void NotifyPropertyChanged(string propertyName)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
}
Получение продуктов из базы данных SQL Server
В файле MainWindow.xaml.cs проекта Windows App SDK создайте метод, который получает продукты из примера базы данных Northwind, а затем возвращает их в виде ObservableCollection коллекции экземпляров Product.
public ObservableCollection<Product> GetProducts(string connectionString)
{
const string GetProductsQuery = "select ProductID, ProductName, QuantityPerUnit," +
" UnitPrice, UnitsInStock, Products.CategoryID " +
" from Products inner join Categories on Products.CategoryID = Categories.CategoryID " +
" where Discontinued = 0";
var products = new ObservableCollection<Product>();
try
{
using (var conn = new SqlConnection(connectionString))
{
conn.Open();
if (conn.State == System.Data.ConnectionState.Open)
{
using (SqlCommand cmd = conn.CreateCommand())
{
cmd.CommandText = GetProductsQuery;
using (SqlDataReader reader = cmd.ExecuteReader())
{
while (reader.Read())
{
var product = new Product();
product.ProductID = reader.GetInt32(0);
product.ProductName = reader.GetString(1);
product.QuantityPerUnit = reader.GetString(2);
product.UnitPrice = reader.GetDecimal(3);
product.UnitsInStock = reader.GetInt16(4);
product.CategoryId = reader.GetInt32(5);
products.Add(product);
}
}
}
}
}
return products;
}
catch (Exception eSql)
{
Debug.WriteLine($"Exception: {eSql.Message}");
}
return null;
}
Добавление базового пользовательского интерфейса
Добавьте следующий КОД XAML в файл MainWindow.xaml проекта Windows App SDK.
Этот XAML создает ListView для отображения каждого продукта, возвращенного в предыдущем фрагменте кода, и привязывает атрибуты каждой строки в ListView к свойствам, которые мы определили в классе Product.
<Grid Background="{ThemeResource SystemControlAcrylicWindowBrush}">
<RelativePanel>
<ListView Name="InventoryList"
SelectionMode="Single"
ScrollViewer.VerticalScrollBarVisibility="Auto"
ScrollViewer.IsVerticalRailEnabled="True"
ScrollViewer.VerticalScrollMode="Enabled"
ScrollViewer.HorizontalScrollMode="Enabled"
ScrollViewer.HorizontalScrollBarVisibility="Auto"
ScrollViewer.IsHorizontalRailEnabled="True"
Margin="20">
<ListView.HeaderTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal" >
<TextBlock Text="ID" Margin="8,0" Width="50" Foreground="DarkRed" />
<TextBlock Text="Product description" Width="300" Foreground="DarkRed" />
<TextBlock Text="Packaging" Width="200" Foreground="DarkRed" />
<TextBlock Text="Price" Width="80" Foreground="DarkRed" />
<TextBlock Text="In stock" Width="80" Foreground="DarkRed" />
</StackPanel>
</DataTemplate>
</ListView.HeaderTemplate>
<ListView.ItemTemplate>
<DataTemplate x:DataType="local:Product">
<StackPanel Orientation="Horizontal" >
<TextBlock Name="ItemId"
Text="{x:Bind ProductCode}"
Width="50" />
<TextBlock Name="ItemName"
Text="{x:Bind ProductName}"
Width="300" />
<TextBlock Text="{x:Bind QuantityPerUnit}"
Width="200" />
<TextBlock Text="{x:Bind UnitPriceString}"
Width="80" />
<TextBlock Text="{x:Bind UnitsInStockString}"
Width="80" />
</StackPanel>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
</RelativePanel>
</Grid>
Отображение продуктов в ListView
Откройте файл MainWindow.xaml.cs и добавьте код в конструктор MainWindow класса, который устанавливает свойство ItemSource элемента ListView на ObservableCollection экземпляров Product.
public MainWindow()
{
this.InitializeComponent();
InventoryList.ItemsSource = GetProducts((App.Current as App).ConnectionString);
}
Запустите проект и посмотрите, как продукты из примера базы данных Northwind отображаются в пользовательском интерфейсе.
Ознакомьтесь с пространством имен System.Data.SqlClient, чтобы узнать, что можно сделать с данными в базе данных SQL Server.
Совет
Попробуйте запросить Microsoft Copilot для получения справки по запросам SQL. Copilot поможет вам написать запросы SQL и предложить способы улучшения кода.
Проблемы с подключением к базе данных?
В большинстве случаев необходимо изменить некоторые аспекты конфигурации SQL Server. Если вы можете подключиться к базе данных из другого типа классического приложения, например Windows Forms или приложения WPF, убедитесь, что вы включили TCP/IP для SQL Server. Это можно сделать в консоли Управление компьютером. (Дополнительные сведения см. в разделе Windows Tools/Administrative Tools.)
Затем убедитесь, что служба браузера SQL Server запущена.
Следующий шаг
Windows developer