Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Aplikace se může připojit přímo k databázi SQL Server a pak ukládat a načítat data pomocí tříd v oboru názvů System.Data.SqlClient.
Začínáme
V této příručce vám ukážeme jeden způsob, jak to udělat v aplikacích, které používají Windows App SDK. Pokud nainstalujete ukázkovou databázi Northwind do instance SQL Server a pak použijete tyto fragmenty kódu, budete mít základní uživatelské rozhraní, které zobrazuje produkty z ukázkové databáze Northwind.
Návod
Můžete také získat skripty pro vytvoření ukázkových databází Northwind a pubs z úložiště SQL Server Ukázky GitHub.
Fragmenty kódu, které se zobrazí v této příručce, jsou založené na této ukázkové aplikaci pro UPW.
Nejprve nastavte řešení.
Pokud chcete aplikaci připojit přímo k databázi SQL Server, může aplikace cílit na libovolnou minimální verzi Windows podporovanou Windows App SDK. Informace najdete na stránce vlastností projektu.
- Otevřete soubor Package.appxmanifest projektu Windows App SDK v návrháři manifestu.
- Na kartě Capabilities zaškrtněte políčko Enterprise Authentication pokud k ověřování SQL Server používáte ověřování Windows.
Důležité
Budete také muset vybrat
Přidání a načtení dat v databázi SQL Server
V této části provedeme tyto akce:
1️⃣ Přidat připojovací řetězec.
2️⃣ Vytvořte třídu pro uchovávání dat produktu.
3️⃣ Načíst produkty z databáze SQL Server.
4️⃣ Přidat základní uživatelské rozhraní.
5️⃣ naplňte uživatelské rozhraní produkty.
Poznámka:
Tato část ukazuje jeden ze způsobů, jak uspořádat kód pro přístup k datům. Účelem je pouze poskytnout příklad použití System.Data.SqlClient k ukládání a načítání dat z databáze SQL Server. Kód můžete uspořádat jakýmkoli způsobem, který dává smysl pro návrh vaší aplikace.
Přidejte řetězec připojení
V souboru App.xaml.cs přidejte do třídy App vlastnost, která poskytuje ostatním třídám v řešení přístup k connection string.
Náš připojovací řetězec odkazuje na databázi Northwind v instanci SQL Server Express. Connection string v tomto fragmentu kódu předpokládá, že při instalaci SQL Server Expressu jste ponechali výchozí název instance SQLEXPRESS. V connection string můžete provádět změny tak, aby odpovídaly vaší instanci, databázi a metodě ověřování 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; }
...
}
Důležité
V produkčních aplikacích by se informace o připojení měly bezpečně ukládat v konfiguraci aplikace (viz Adding Azure App Configuration pomocí Visual Studio Connected Services). Připojovací řetězce a další tajné kódy by nikdy neměly být pevně zakódované.
Vytvoření třídy pro uchovávání dat o produktech
Vytvoříme třídu, která implementuje INotifyPropertyChanged událost, abychom mohli svázat atributy v uživatelském rozhraní XAML s vlastnostmi v této třídě.
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));
}
}
Načtení produktů z databáze SQL Server
V souboru MainWindow.xaml.cs projektu Windows App SDK vytvořte metodu, která získá produkty z ukázkové databáze Northwind, a pak je vrátí jako ObservableCollection kolekce Product instancí.
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;
}
Přidání základního uživatelského rozhraní
Do souboru MainWindow.xaml projektu Windows App SDK přidejte následující kód XAML.
Tento XAML vytvoří ListView pro zobrazení každého produktu, který jste vrátili v předchozím fragmentu kódu, a vytvoří vazbu atributů každého řádku na ListView vlastnosti, které jsme definovali ve Product třídě.
<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>
Zobrazení produktů v zobrazení ListView
Otevřete soubor MainWindow.xaml.cs a přidejte kód do konstruktoru třídy MainWindow, který nastaví vlastnost ItemSource u ListView na ObservableCollection instancí Product.
public MainWindow()
{
this.InitializeComponent();
InventoryList.ItemsSource = GetProducts((App.Current as App).ConnectionString);
}
Spusťte projekt a prohlédněte si produkty z ukázkové databáze Northwind v uživatelském rozhraní.
Prozkoumejte obor názvů System.Data.SqlClient a zjistěte, co dalšího můžete s daty v databázi SQL Server dělat.
Návod
Zkuste požádat Microsoft Copilot o pomoc s dotazy SQL. Copilot vám můžou pomoct psát dotazy SQL a navrhovat způsoby, jak kód vylepšit.
Máte potíže s připojením k databázi?
Ve většině případů je potřeba změnit některé aspekty konfigurace SQL Server. Pokud se ke své databázi můžete připojit z jiného typu desktopové aplikace, jako je Windows Forms nebo WPF aplikace, ujistěte se, že jste pro SQL Server povolili protokol TCP/IP. Můžete to udělat v konzole pro správu počítače . (Další informace najdete v tématu Windows Nástroje pro správu.)
Pak se ujistěte, že je spuštěná služba SQL Server Browser.
Další krok
Windows developer