Share via


.NET Framework uygulamalarında bir veritabanına (birden çok tablo) veri kaydetme

Not

Veri kümeleri ve ilgili sınıflar, uygulamaların veritabanıyla bağlantısı kesilirken uygulamaların bellekteki verilerle çalışmasını sağlayan 2000'lerin başlarındaki eski .NET Framework teknolojileridir. Bunlar özellikle kullanıcıların verileri değiştirmesine ve değişiklikleri veritabanında kalıcı hale getirebilmesine olanak tanıyan uygulamalar için kullanışlıdır. Veri kümelerinin çok başarılı bir teknoloji olduğu kanıtlanmış olsa da, yeni .NET uygulamalarının Entity Framework Core kullanmasını öneririz. Entity Framework, tablosal verilerle nesne modelleri olarak çalışmak için daha doğal bir yol sağlar ve daha basit bir programlama arabirimine sahiptir.

Uygulama geliştirmedeki en yaygın senaryolardan biri, windows uygulamasındaki bir formdaki verileri görüntülemek, verileri düzenlemek ve güncelleştirilmiş verileri veritabanına geri göndermektir. Bu izlenecek yol, iki ilişkili tablodaki verileri görüntüleyen ve kayıtları düzenlemeyi ve değişiklikleri veritabanına geri kaydetmeyi gösteren bir form oluşturur. Bu örnekte Northwind örnek veritabanındaki ve Orders tabloları kullanılmaktadırCustomers.

TableAdapter yöntemini çağırarak Update uygulamanızdaki verileri veritabanına geri kaydedebilirsiniz. Tabloları Veri Kaynakları penceresinden bir forma sürüklediğinizde, verileri kaydetmek için gereken kod otomatik olarak eklenir. Forma eklenen tüm ek tablolar için bu kodun el ile eklenmesi gerekir. Bu kılavuzda, birden çok tablodan güncelleştirmeleri kaydetmek için kod ekleme gösterilmektedir.

Bu kılavuzda gösterilen görevler şunlardır:

  • Veri Kaynağı Yapılandırma Sihirbazı ile uygulamanızda veri kaynağı oluşturma ve yapılandırma.

  • Veri Kaynakları penceresinde öğelerin denetimlerini ayarlama. Daha fazla bilgi için bkz . Veri Kaynakları penceresinden sürüklenirken oluşturulacak denetimi ayarlama.

  • Veri Kaynakları penceresindeki öğeleri formunuza sürükleyerek veriye bağlı denetimler oluşturma.

  • Veri kümesindeki her tablodaki birkaç kaydı değiştirme.

  • Veri kümesindeki güncelleştirilmiş verileri veritabanına geri göndermek için kodu değiştirme.

Önkoşullar

Bu öğreticiyi tamamlamak için Visual Studio'da yüklü .NET masaüstü geliştirme ve Veri depolama ve işleme iş yüklerine ihtiyacınız vardır. Bunları yüklemek için Visual Studio Yükleyicisi açın ve değiştirmek istediğiniz Visual Studio sürümünün yanındaki Değiştir (veya Daha Fazla>Değiştir) öğesini seçin. Bkz. Visual Studio'yu değiştirme.

Bu kılavuzda SQL Server Express LocalDB ve Northwind örnek veritabanı kullanılmaktadır.

  1. SQL Server Express LocalDB'niz yoksa, SQL Server Express indirme sayfasından veya Visual Studio Yükleyicisi aracılığıyla yükleyin. Visual Studio Yükleyicisi, SQL Server Express LocalDB'yi Veri depolama ve işleme iş yükünün bir parçası olarak veya tek bir bileşen olarak yükleyebilirsiniz.

  2. Aşağıdaki adımları izleyerek Northwind örnek veritabanını yükleyin:

    1. Visual Studio'da SQL Server Nesne Gezgini penceresini açın. (SQL Server Nesne Gezgini, Visual Studio Yükleyicisi Veri depolama ve işleme iş yükünün bir parçası olarak yüklenir.) SQL Server düğümünü genişletin. LocalDB örneğinize sağ tıklayın ve Yeni Sorgu'yu seçin.

      Sorgu düzenleyicisi penceresi açılır.

    2. Northwind Transact-SQL betiğini panonuza kopyalayın. Bu T-SQL betiği, Northwind veritabanını sıfırdan oluşturur ve verilerle doldurur.

    3. T-SQL betiğini sorgu düzenleyicisine yapıştırın ve ardından Yürüt düğmesini seçin.

      Kısa bir süre sonra sorgunun çalışması tamamlanır ve Northwind veritabanı oluşturulur.

Windows Forms uygulamasını oluşturma

C# veya Visual Basic için yeni bir Windows Forms Uygulaması projesi oluşturun. Projeyi UpdateMultipleTablesWalkthrough olarak adlandırın.

Veri kaynağı oluşturma

Bu adım, Veri Kaynağı Yapılandırma Sihirbazı'nı kullanarak Northwind veritabanından bir veri kaynağı oluşturur. Bağlantıyı oluşturmak için Northwind örnek veritabanına erişiminiz olmalıdır. Northwind örnek veritabanını ayarlama hakkında bilgi için bkz . Nasıl yapılır: Örnek veritabanlarını yükleme.

  1. Veri menüsünde Veri Kaynaklarını Göster'i seçin.

    Veri Kaynakları penceresi açılır.

  2. Veri Kaynağı Yapılandırma Sihirbazı'nı başlatmak için Veri Kaynakları penceresinde Yeni Veri Kaynağı Ekle'yi seçin.

  3. Veri Kaynağı Türü Seçin ekranında Veritabanı'nı ve ardından İleri'yi seçin.

  4. Veri Bağlan ion'ınızı seçin ekranında aşağıdakilerden birini yapın:

    • Açılan listede Northwind örnek veritabanına bir veri bağlantısı varsa seçin.

      -veya-

    • Bağlan Ekle/Değiştir iletişim kutusunu açmak için Yeni Bağlan ion'ı seçin.

  5. Veritabanınız parola gerektiriyorsa, hassas verileri dahil etme seçeneğini belirleyin ve ardından İleri'yi seçin.

  6. bağlantı dizesi Uygulama Yapılandırması dosyasına kaydet dosyasında İleri'yi seçin.

  7. Veritabanı Nesnelerinizi Seçin ekranında Tablolar düğümünü genişletin.

  8. Müşteriler ve Siparişler tablolarını ve ardından Son'u seçin.

    NorthwindDataSet projenize eklenir ve tablolar Veri Kaynakları penceresinde görünür.

Oluşturulacak denetimleri ayarlama

Bu izlenecek yol için tablodaki Customers veriler, tek tek denetimlerde verilerin görüntülendiği Ayrıntılar düzenindedir. Tablodaki Orders veriler, denetimde görüntülenen kılavuz düzenindedirDataGridView.

Veri Kaynakları penceresindeki öğelerin bırakma türünü ayarlamak için

  1. Veri Kaynakları penceresinde Müşteriler düğümünü genişletin.

  2. Müşteriler düğümünde Denetim listesinden Ayrıntılar'ı seçerek Müşteriler tablosunun denetimini tek tek denetimlerle değiştirin. Daha fazla bilgi için bkz . Veri Kaynakları penceresinden sürüklenirken oluşturulacak denetimi ayarlama.

Veriye bağlı formu oluşturma

Veri Kaynakları penceresindeki öğeleri formunuza sürükleyerek veriye bağlı denetimler oluşturabilirsiniz.

  1. Ana Müşteriler düğümünü Veri Kaynakları penceresinden Form1'e sürükleyin.

    Formda açıklayıcı etiketler içeren veriye bağlı denetimler ve kayıtlarda gezinmek için bir araç şeridi (BindingNavigator) görüntülenir. Bileşen tepsisinde bir NorthwindDataSet, CustomersTableAdapter, BindingSourceve BindingNavigator görünür.

  2. İlgili Siparişler düğümünü Veri Kaynakları penceresinden Form1'e sürükleyin.

    Not

    İlgili Siparişler düğümü Faks sütununun altında bulunur ve Müşteriler düğümünün alt düğümüdür.

    DataGridView Formda kayıtlarda gezinmek için bir denetim ve araç şeridi (BindingNavigator). Bir OrdersTableAdapter ve BindingSource bileşen tepsisinde görünür.

Veritabanını güncelleştirmek için kod ekleme

Customers ve Orders TableAdapters yöntemlerini çağırarak Update veritabanını güncelleştirebilirsiniz. Varsayılan olarak, veritabanını güncelleştirmeleri göndermek için formunBindingNavigator koduna kaydet düğmesinin olay işleyicisi eklenir. Bu yordam, güncelleştirmeleri doğru sırada göndermek için kodu değiştirir. Bu, bilgi tutarlılığı hataları oluşturma olasılığını ortadan kaldırır. Kod ayrıca güncelleştirme çağrısını try-catch bloğuna sarmalayarak hata işleme uygular. Kodu uygulamanızın gereksinimlerine uyacak şekilde değiştirebilirsiniz.

Not

Netlik sağlamak için bu izlenecek yol bir işlem kullanmaz. Ancak, iki veya daha fazla ilişkili tabloyu güncelleştiriyorsanız, bir işlem içindeki tüm güncelleştirme mantığını ekleyin. İşlem, veritabanındaki tüm ilgili değişikliklerin herhangi bir değişiklik işlenmeden önce başarılı olmasını sağlayan bir işlemdir. Daha fazla bilgi için bkz . İşlemler ve Eşzamanlılık.

Uygulamaya güncelleştirme mantığı eklemek için

  1. üzerindeki BindingNavigatorKaydet düğmesini seçin. Bu işlem Kod Düzenleyicisi'ni olay işleyicisine bindingNavigatorSaveItem_Click açar.

  2. İlgili TableAdapters yöntemlerini çağırmak Update için olay işleyicisindeki kodu değiştirin. Aşağıdaki kod önce her DataRowState (Deleted, Addedve Modified) için güncelleştirilmiş bilgileri tutmak üzere üç geçici veri tablosu oluşturur. Güncelleştirmeler doğru sırada çalıştırılır. Kod aşağıdaki gibi görünmelidir:

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

Uygulamayı test etme

  1. F5 tuşuna basın.

  2. Her tablodaki bir veya daha fazla kaydın verilerinde bazı değişiklikler yapın.

  3. Kaydet düğmesini seçin.

  4. Değişikliklerin kaydedildiğini doğrulamak için veritabanındaki değerleri denetleyin.