Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Appen kan ansluta direkt till en SQL Server databas och sedan lagra och hämta data med hjälp av klasser i namnområdet System.Data.SqlClient.
Komma igång
I den här guiden visar vi ett sätt att göra det i appar som använder Windows App SDK. Om du installerar Northwind exempeldatabas på din SQL Server-instans och sedan använder dessa kodfragment, får du ett grundläggande användargränssnitt som visar produkter från Northwind-exempeldatabasen.
Tips/Råd
Du kan också hämta skript för att skapa exempeldatabaserna Northwind och pubs från SQL Server Samples GitHub repository.
Kodfragmenten som visas i den här guiden baseras på den här exempelappen.
Konfigurera först lösningen
Om du vill ansluta din app direkt till en SQL Server databas kan din app rikta in sig på valfri lägsta version av Windows som stöds av Windows App SDK. Du hittar den informationen på egenskapssidan för projektet.
- Öppna filen Package.appxmanifest i Windows App SDK-projektet i manifestdesignern.
- På fliken Capabilities väljer du kryssrutan Enterprise Authentication om du använder Windows-autentisering för att autentisera din SQL Server.
Viktigt!
Du måste också välja
Lägga till och hämta data i en SQL Server databas
I det här avsnittet gör vi följande:
1️⃣ Lägg till en anslutningssträng.
2️⃣ Skapa en klass för att lagra produktdata.
3️⃣ Hämta produkter från SQL Server-databasen.
4️⃣ Lägg till ett grundläggande användargränssnitt.
5️⃣ Fyll i användargränssnittet med produkter.
Anmärkning
Det här avsnittet illustrerar ett sätt att organisera din dataåtkomstkod. Det är bara avsett att ge ett exempel på hur du kan använda System.Data.SqlClient för att lagra och hämta data från en SQL Server databas. Du kan organisera koden på alla sätt som passar bäst för programmets design.
Lägg till en anslutningssträng
I filen App.xaml.cs lägger du till en egenskap i klassen App som ger andra klasser i lösningen åtkomst till connection string.
Vår connection string pekar på Northwind-databasen i en SQL Server Express-instans. Connection string i det här kodfragmentet förutsätter att du behöll standardinstansnamnet SQLEXPRESS när du installerar SQL Server Express. Du kan göra ändringar i connection string för att matcha din SQL Server instans-, databas- och autentiseringsmetod.
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; }
...
}
Viktigt!
I produktionsprogram bör anslutningsinformation lagras på ett säkert sätt i appkonfigurationen (se Tilldela Azure App Configuration med hjälp av Visual Studio Anslutna tjänster). Anslutningssträngar och andra hemligheter får aldrig hårdkodas.
Skapa en klass för att lagra produktdata
Vi skapar en klass som implementerar händelsen INotifyPropertyChanged så att vi kan binda attribut i vårt XAML-användargränssnitt till egenskaperna i den här klassen.
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));
}
}
Hämta produkter från SQL Server-databasen
I filen MainWindow.xaml.cs i Windows App SDK-projektet skapar du en metod som hämtar produkter från Northwind-exempeldatabasen och returnerar dem sedan som en ObservableCollection samling Product-instanser.
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;
}
Lägga till ett grundläggande användargränssnitt
Lägg till följande XAML i filen MainWindow.xaml i Windows App SDK-projektet.
Denna XAML skapar en ListView för att visa varje produkt som du returnerade i föregående kodfragment och binder attributen för varje rad i ListView till de egenskaper som vi definierade i Product klassen.
<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>
Visa produkter i ListView
Öppna filen MainWindow.xaml.cs och lägg till kod i konstruktorn MainWindow för klassen som anger egenskapen ItemSource för ListView till ObservableCollection för Product instanser.
public MainWindow()
{
this.InitializeComponent();
InventoryList.ItemsSource = GetProducts((App.Current as App).ConnectionString);
}
Starta projektet och se produkter från Northwind-exempeldatabasen visas i användargränssnittet.
Utforska namnområdet System.Data.SqlClient för att se vad andra saker du kan göra med data i din SQL Server databas.
Tips/Råd
Prova att fråga Microsoft Copilot om du vill ha hjälp med dina SQL-frågor. Copilot kan hjälpa dig att skriva SQL-frågor och föreslå sätt att förbättra koden.
Har du problem med att ansluta till databasen?
I de flesta fall måste någon aspekt av SQL Server konfigurationen ändras. Om du kan ansluta till databasen från en annan typ av skrivbordsprogram, till exempel ett Windows Forms eller WPF program, kontrollerar du att du har aktiverat TCP/IP för SQL Server. Du kan göra det i datorhanteringskonsolen . (Mer information finns i Windows Tools/Administrationsverktyg.)
Kontrollera sedan att tjänsten SQL Server Browser körs.
Nästa steg
Windows developer