Megosztás a következőn keresztül:


Adatok mentése adatbázisba (több táblába) a .NET-keretrendszer alkalmazásaiban

Megjegyzés:

Az DataSet osztály és a kapcsolódó osztályok a 2000-es évek elejétől származó régi .NET-keretrendszer-technológiák, amelyek lehetővé teszik az alkalmazások számára a memóriában lévő adatokkal való munkát, miközben az alkalmazások leválasztva vannak az adatbázisról. A technológiák különösen hasznosak az olyan alkalmazások esetében, amelyek lehetővé teszik a felhasználók számára az adatok módosítását és a módosítások visszaállítását az adatbázisba. Bár az adathalmazok bizonyítottan sikeres technológiának számítanak, az új .NET-alkalmazásokhoz ajánlott az Entity Framework Core használata. Az Entity Framework természetesebb módot kínál a táblázatos adatok objektummodellként való használatához, és egyszerűbb programozási felülettel rendelkezik.

Az alkalmazásfejlesztés egyik leggyakoribb forgatókönyve, hogy adatokat jelenít meg egy űrlapon egy Windows-alkalmazásban, szerkessze az adatokat, és küldje vissza a frissített adatokat az adatbázisba. Ez az útmutató létrehoz egy űrlapot, amely két kapcsolódó tábla adatait jeleníti meg, és bemutatja, hogyan szerkesztheti a rekordokat, és hogyan mentheti a módosításokat az adatbázisba. Ez a példa a Northwind mintaadatbázisból származó Customers és Orders táblákat használja.

Az alkalmazásban lévő adatokat a TableAdapter metódus meghívásával mentheti vissza az Update adatbázisba. Amikor táblákat húz az Adatforrások ablakból egy űrlapra, a rendszer automatikusan hozzáadja az adatok mentéséhez szükséges kódot. Az űrlaphoz hozzáadott további táblákhoz szükség van a kód manuális hozzáadására. Ez az útmutató bemutatja, hogyan adhat hozzá kódot a frissítések mentéséhez több táblából.

Az ebben az útmutatóban bemutatott feladatok a következők:

Előfeltételek

Az oktatóanyag elvégzéséhez telepítenie kell a Visual Studióban telepített .NET asztali fejlesztési és adattárolási és feldolgozási számítási feladatokat. A telepítésükhöz nyissa meg Visual Studio Installer, és válassza a módosítani kívánt Visual Studio-verzió melletti módosítása (vagy További>módosítása) lehetőséget. Lásd a részt a Visual Studiomódosításáról.

Ez az útmutató az SQL Server Express LocalDB-t és a Northwind-mintaadatbázist használja.

  1. Ha nem rendelkezik SQL Server Express LocalDB-vel, telepítse az SQL Server Express letöltési oldaláról vagy a Visual Studio Installeren keresztül. A Visual Studio Installeraz SQL Server Express LocalDB-t a Adattárolás és -feldolgozás részeként, vagy különálló összetevőként telepítheti.

  2. Telepítse a Northwind mintaadatbázist az alábbi lépések végrehajtásával:

    1. Nyissa meg a SQL Server Object Explorer ablakát a Visual Studióban. (Az SQL Server Object Explorer a Visual Studio Installer adattárolási és feldolgozási számítási feladatainak részeként van telepítve.) Bontsa ki az SQL Server-csomópontot . Jobb gombbal kattintson a LocalDB példányára, majd válassza az Új lekérdezéslehetőséget.

      Megnyílik egy lekérdezésszerkesztő ablak.

    2. Másolja a Northwind Transact-SQL szkriptet a vágólapra. Ez a T-SQL-szkript az alapoktól hozza létre a Northwind-adatbázist, és feltölti az adatokkal.

    3. Illessze be a T-SQL-szkriptet a lekérdezésszerkesztőbe, majd válassza a Végrehajtás gombot.

      Rövid idő elteltével a lekérdezés befejeződik, és létrejön a Northwind-adatbázis.

A Windows Forms alkalmazás létrehozása

Hozzon létre egy új Windows Forms-alkalmazásprojektet c# vagy Visual Basic rendszerhez. Nevezze el a projekt UpdateMultipleTablesWalkthrough nevét.

Az adatforrás létrehozása

Ez a lépés létrehoz egy adatforrást a Northwind-adatbázisból az Adatforrás konfigurálása varázslóval. A kapcsolat létrehozásához hozzáféréssel kell rendelkeznie a Northwind mintaadatbázishoz. A Northwind mintaadatbázis beállításával kapcsolatos információkért lásd: Útmutató: Mintaadatbázisok telepítése.

  1. Az Adatok menüben válassza az Adatforrások megjelenítése lehetőséget.

    Megnyílik az Adatforrások ablak.

  2. Az Adatforrások ablakban válassza az Új adatforrás hozzáadása lehetőséget az Adatforrás konfigurációs varázslójának elindításához.

  3. Az Adatforrástípus kiválasztása képernyőn válassza az Adatbázis lehetőséget, majd a Tovább lehetőséget.

  4. Az Adatkapcsolat kiválasztása képernyőn tegye az alábbiak egyikét:

    • Ha a Northwind mintaadatbázishoz adatkapcsolat érhető el a legördülő listában, jelölje ki.

      -vagy-

    • Válassza az Új kapcsolat lehetőséget a Kapcsolat hozzáadása/módosítása párbeszédpanel megnyitásához.

  5. Ha az adatbázishoz jelszó szükséges, válassza a bizalmas adatok megadásának lehetőségét, majd válassza a Tovább gombot.

  6. A Kapcsolati sztring mentése az alkalmazáskonfigurációs fájlba területen válassza a Tovább gombot.

  7. Az Adatbázis-objektumok kiválasztása képernyőn bontsa ki a Táblák csomópontot .

  8. Válassza ki a Vevők és rendelések táblát, majd a Befejezés lehetőséget.

    A NorthwindDataSet hozzáadódik a projekthez, és a táblák megjelennek az Adatforrások ablakban.

A létrehozandó vezérlők beállítása

Ebben az útmutatóban a Customers táblázat adatai részletek elrendezésben jelennek meg, ahol az adatok az egyes vezérlőkben jelennek meg. A Orders táblázat adatai egy vezérlőben megjelenő rácselrendezésbenDataGridView jelennek meg.

Az Adatforrások ablak elemeinek legördülő típusának beállítása

  1. Az Adatforrások ablakban bontsa ki az Ügyfelek csomópontot.

  2. Az Ügyfelek csomóponton válassza a Részletek lehetőséget a vezérlőlistában a Vevők tábla vezérlőjének egyéni vezérlőkre való módosításához. További információ : Az Adatforrások ablakból való húzáskor létrehozandó vezérlő beállítása.

Az adathoz kötött űrlap létrehozása

Az adathoz kötött vezérlőket úgy hozhatja létre, hogy elemeket húz az Adatforrások ablakból az űrlapra.

  1. Húzza a fő ügyfelek csomópontot az Adatforrások ablakból a Form1-be.

    Az űrlapon leíró címkékkel ellátott adatkötésű vezérlők jelennek meg, valamint egy eszközsáv (BindingNavigator) a rekordok navigálásához. Egy NorthwindDataSet, CustomersTableAdapter, BindingSource, és BindingNavigator megjelennek az összetevő tálcában.

  2. Húzza a kapcsolódó Rendelések csomópontot az Adatforrások ablakból a Form1-be.

    Megjegyzés:

    A kapcsolódó Rendelések csomópont a Fax oszlop alatt található, és az Ügyfelek csomópont gyermekcsomópontja.

    Az DataGridView űrlapon megjelenik egy vezérlőelem és egy eszközsáv (BindingNavigator) a rekordok navigálásához. Egy OrdersTableAdapter és BindingSource megjelenik az összetevő tálcán.

Kód hozzáadása az adatbázis frissítéséhez

Az adatbázist a Vevők és Rendelések táblaadapterek metódusainak Update meghívásával frissítheti. Alapértelmezés szerint a rendszer hozzáad egy eseménykezelőt az űrlap kódjához a Mentés gombhozBindingNavigator , hogy frissítéseket küldjön az adatbázisnak. Ez az eljárás módosítja a kódot, hogy a frissítéseket a megfelelő sorrendben küldje el. Ez kiküszöböli a hivatkozási integritási hibák lehetőségét. A kód a hibakezelést úgy is megvalósítja, hogy a frissítési hívást egy kipróbálási blokkba csomagolja. A kódot az alkalmazás igényeinek megfelelően módosíthatja.

Megjegyzés:

Az egyértelműség kedvéért ez az útmutató nem használ tranzakciót. Ha azonban két vagy több kapcsolódó táblát frissít, adja meg a tranzakció összes frissítési logikáját. A tranzakciók olyan folyamatok, amelyek biztosítják, hogy az adatbázis összes kapcsolódó módosítása sikeres legyen a módosítások véglegesítése előtt. További információ: Tranzakciók és egyidejűség.

Frissítési logika hozzáadása az alkalmazáshoz

  1. Válassza a Mentés gombot a BindingNavigator. Ezzel megnyitja a Kódszerkesztőt az bindingNavigatorSaveItem_Click eseménykezelőnek.

  2. Cserélje le a kódot az eseménykezelőben a Update kapcsolódó TableAdapters metódusainak meghívásához. A következő kód először három ideiglenes adattáblát hoz létre, hogy az DataRowState, Deleted, Added és Modified frissített információit tartalmazzák. A frissítések a megfelelő sorrendben futnak. A kódnak a következőképpen kell kinéznie:

    this.Validate();
    this.ordersBindingSource.EndEdit();
    this.customersBindingSource.EndEdit();
    
    NorthwindDataSet.OrdersDataTable deletedOrders = (NorthwindDataSet.OrdersDataTable)
        northwindDataSet.Orders.GetChanges(DataRowState.Deleted);
    
    NorthwindDataSet.OrdersDataTable newOrders = (NorthwindDataSet.OrdersDataTable)
        northwindDataSet.Orders.GetChanges(DataRowState.Added);
    
    NorthwindDataSet.OrdersDataTable modifiedOrders = (NorthwindDataSet.OrdersDataTable)
        northwindDataSet.Orders.GetChanges(DataRowState.Modified);
    
    try
    {
        // Remove all deleted orders from the Orders table.
        if (deletedOrders != null)
        {
            ordersTableAdapter.Update(deletedOrders);
        }
    
        // Update the Customers table.
        customersTableAdapter.Update(northwindDataSet.Customers);
    
        // Add new orders to the Orders table.
        if (newOrders != null)
        {
            ordersTableAdapter.Update(newOrders);
        }
    
        // Update all modified Orders.
        if (modifiedOrders != null)
        {
            ordersTableAdapter.Update(modifiedOrders);
        }
    
        northwindDataSet.AcceptChanges();
    }
    
    catch (System.Exception ex)
    {
        MessageBox.Show("Update failed");
    }
    
    finally
    {
        if (deletedOrders != null)
        {
            deletedOrders.Dispose();
        }
        if (newOrders != null)
        {
            newOrders.Dispose();
        }
        if (modifiedOrders != null)
        {
            modifiedOrders.Dispose();
        }
    }
    

Az alkalmazás tesztelése

  1. Nyomja meg a F5gombokat.

  2. Módosítsa az egyes táblák egy vagy több rekordjának adatait.

  3. Válassza ki a Mentés gombot.

  4. Ellenőrizze az adatbázisban lévő értékeket a módosítások mentésének ellenőrzéséhez.