Oktatóanyag: SQL Server-adatbázis használata Windows alkalmazásban

Az alkalmazás közvetlenül csatlakozhat egy SQL Server-adatbázishoz, majd a System.Data.SqlClient névtér osztályai segítségével tárolhatja és lekérheti az adatokat.

Kezdő lépések

Ebben az útmutatóban bemutatjuk, hogyan teheti ezt meg a Windows App SDK használó alkalmazásokban. Ha telepíti a Northwind mintaadatbázist a SQL Server-példányra, majd ezeket a kódrészleteket használja, egy alapszintű felhasználói felület jelenik meg, amely a Northwind mintaadatbázis termékeit jeleníti meg.

Northwind-termékek

Jótanács

Szkripteket is lekérhet a Northwind és pubs mintaadatbázisok létrehozásához a SQL Server Minták GitHub adattárból.

Az útmutatóban megjelenő kódrészletek ezen mintaalkalmazáson alapulnak.

Először állítsa be a megoldást

Ha közvetlenül egy SQL Server-adatbázishoz szeretné csatlakoztatni az alkalmazást, az alkalmazás a Windows App SDK által támogatott minimális Windows-verziót célozhatja meg. Ezeket az információkat a projekt tulajdonságok oldalán találja.

  1. Nyissa meg a Package.appxmanifest fájlt a Windows App SDK projektjéről a jegyzéktervezőben.
  2. A Capabilities lapon jelölje be a Enterprise Authentication jelölőnégyzetet, ha Windows hitelesítést használ a SQL Server hitelesítéséhez.

Vállalati hitelesítési képesség

Fontos

A Internet (Ügyfél és Kiszolgáló), Internet (Ügyfél) és Private Networks (Ügyfél és Kiszolgáló) lehetőséget is ki kell választania, függetlenül attól, hogy a Windows hitelesítést használja-e.

Adatok hozzáadása és lekérése SQL Server adatbázisban

Ebben a szakaszban a következő műveleteket hajtjuk végre:

1️⃣ Kapcsolati karakterlánc hozzáadása.

2️⃣ Hozzon létre egy osztályt a termékadatok tárolásához.

3️⃣ Termékek lekérése a SQL Server adatbázisból.

4️⃣ Egyszerű felhasználói felület hozzáadása.

5️⃣ Töltse fel a felhasználói felületet termékekkel.

Megjegyzés:

Ez a szakasz az adatelérési kód rendszerezésének egyik módját mutatja be. Csak példaként szolgál arra, hogyan használható System.Data.SqlClient adatok tárolása és lekérése egy SQL Server adatbázisból. A kódot bármilyen módon rendszerezheti, amely a legérthetőbb az alkalmazás kialakításának szempontjából.

Adjon hozzá egy kapcsolati sztringet

A App.xaml.cs fájlban adjon hozzá egy tulajdonságot a App osztályhoz, amely hozzáférést biztosít a megoldás más osztályai számára a connection string.

A csatlakozási karakterlánc egy SQL Server Express-példányban lévő Northwind-adatbázisra mutat. A kódrészlet kapcsolati karakterlánca feltételezi, hogy az SQL Server Express telepítésekor az alapértelmezett példánynevet SQLEXPRESS tartotta meg. A kapcsolatláncot úgy módosíthatja, hogy az megfeleljen a SQL Server példányának, adatbázisának és a hitelesítési módszernek.

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; }

    ...
}

Fontos

Éles alkalmazásokban a kapcsolati adatokat biztonságosan kell tárolni az alkalmazáskonfigurációban (lásd: Az Azure App Configuration hozzáadása Visual Studio Csatlakoztatott szolgáltatások használatával). A kapcsolati sztringeket és más titkos kódokat soha nem szabad szigorúan kódolva tárolni.

Osztály létrehozása a termékadatok tárolásához

Létrehozunk egy osztályt, amely megvalósítja az INotifyPropertyChanged eseményt , így az XAML felhasználói felületén lévő attribútumokat az osztály tulajdonságaihoz köthetjük.

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));
    }
}

Termékek lekérése a SQL Server adatbázisból

A Windows App SDK projekt MainWindow.xaml.cs fájljában hozzon létre egy metódust, amely lekéri a Termékeket a Northwind mintaadatbázisból, majd ObservableCollectionProduct példányok gyűjteményeként adja vissza őket.

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;
}

Egyszerű felhasználói felület hozzáadása

Adja hozzá a következő XAML-t a MainWindow.xaml fájlhoz a Windows App SDK projekthez.

Ez az XAML létrehoz egy ListView-t , amely megjeleníti az előző kódrészletben visszaadott összes terméket, és az egyes sorok ListView attribútumait az osztályban Product definiált tulajdonságokhoz köti.

<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>

Termékek megjelenítése a ListView-ban

Nyissa meg a MainWindow.xaml.cs fájlt, és adjon hozzá kódot annak az osztálynak a MainWindow konstruktorához, amely a ListViewItemSource tulajdonságát a példányok ObservableCollection elemére Product állítja.

public MainWindow()
{
    this.InitializeComponent();
    InventoryList.ItemsSource = GetProducts((App.Current as App).ConnectionString);
}

Indítsa el a projektet, és tekintse meg a Northwind mintaadatbázis termékeit a felhasználói felületen.

Northwind-termékek

Fedezze fel a System.Data.SqlClient névteret, és nézze meg, milyen egyéb műveleteket végezhet az SQL Server adatbázis adataival.

Jótanács

Kérjen segítséget Microsoft Copilot az SQL-lekérdezésekkel kapcsolatban. Copilot segíthet az SQL-lekérdezések írásában, és javaslatot tehet a kód javítására.

Nem tud csatlakozni az adatbázishoz?

A legtöbb esetben módosítani kell a SQL Server konfiguráció néhány aspektusát. Ha képes egy másik asztali alkalmazásból, például Windows Forms vagy WPF alkalmazásból csatlakozni az adatbázishoz, győződjön meg róla, hogy engedélyezte a TCP/IP beállítást az SQL Serverhez. Ezt a Számítógép-kezelés konzolon teheti meg. (További információ: Windows Eszközök/Felügyeleti eszközök.)

Számítógép-kezelés

Ezután győződjön meg arról, hogy a SQL Server Böngésző szolgáltatás fut.

SQL Server Browser Service

Következő lépés