Aracılığıyla paylaş


İzlenecek yol: Bir veritabanı (birden çok tabloları) verilerini kaydetme

Bir Windows uygulamasında bir formdaki verileri görüntülemek, veri düzenleme ve güncelleştirilmiş verileri veritabanına geri göndermek için uygulama geliştirmede en yaygın senaryolardan biri olan. Bu izlenecek yolda, iki ilgili tablodaki verileri görüntüleyen ve kayıtları düzenleyemez ve değişiklikleri veritabanına nasıl gösterir form oluşturur. Bu örnek Customers ve Orders Northwind örnek veritabanından tablo.

Veri uygulamanız veritabanına çağırarak kaydedebilirsiniz Update bir TableAdapter yöntemi. Öğeleri sürükleyerek Veri kaynakları verileri kaydetmek için kod penceresinde otomatik olarak bir form üzerine atılan ilk tablonun eklenir. Forma eklenen ek tabloları veri kaydetmek için gereken herhangi bir kodu el ile eklenmesi gerekir. Bu izlenecek yolda, birden fazla tablodan güncelleştirmeleri kaydetmek için kod eklemek gösterilmiştir.

Not

Gördüğünüz iletişim kutuları ve menü komutları, etkin ayarlarınıza ve ürün sürümüne bağlı olarak Yardım menüsünde açıklanana göre farklılık gösterebilir.Ayarlarınızı değiştirmek için Araçlar menüsünden İçeri ve Dışarı Aktarma Ayarları'nı seçin.Daha fazla bilgi için bkz. Visual Studio ayarları.

Bu izlenecek yolda gösterilen görevler aşağıdakileri içerir:

Önkoşullar

Bu izlenecek yolu tamamlamak için şunları yapmanız gerekir:

Windows uygulama oluşturma

İlk adım oluşturmaktır bir Windows Application. Proje için bir ad atama sırasında bu adım isteğe bağlıdır, ancak daha sonra kaydetme hakkındaki biz planlama çünkü biz bunu bir ad sağlayacaktır.

Yeni bir Windows Application projesi oluşturmak için

  1. Dan Dosya menüsünde, yeni bir proje yaratın.

  2. Proje adı UpdateMultipleTablesWalkthrough.

  3. Seçin Windows Application 'ı tıklatın ve Tamam. Daha fazla bilgi için bkz. İstemci Uygulamaları Geliştirme.

    UpdateMultipleTablesWalkthrough proje yaratılır ve eklenen Solution Explorer.

Veri Kaynağı Oluşturma

Bu adım, Northwind veritabanı kullanarak bir veri kaynağı oluşturur Data Source Configuration Wizard. Bağlantı oluşturmak için Northwind örnek veritabanına erişiminiz olmalıdır. Northwind örnek veritabanı kurma hakkında daha fazla bilgi için bkz: Nasıl yapılır: örnek veritabanları yükleme.

Veri kaynağı oluşturmak için

  1. Üzerinde veri menüsünde,'ı Show Data Sources.

  2. İçinde Veri kaynakları penceresinde tıklatın Add New Data Source başlatmak için Data Source Configuration Wizard.

  3. Seçin veritabanı , veri kaynağı türü seçin sayfa ve i İleri.

  4. Üzerinde veri bağlantısı Seç aşağıdakilerden birini sayfa yapın:

  5. Veritabanınız bir parola gerektiriyorsa, önemli verileri içerir ve i seçeneğini İleri.

  6. Tıklatın İleri , bağlantı dizesini uygulama yapılandırma dosyasına kaydetmek sayfa.

  7. Genişletme Tablo düğümünde veritabanı nesnelerini Seç sayfa.

  8. Seçin müşterilerin ve siparişleri tablolar ve sonra Son.

    NorthwindDataSet projenize eklenir ve tablolar görünür Veri kaynakları pencere.

Oluşturulacak denetimleri ayarlama

Bu izlenecek yolun veri içinde Customers tablo içinde olacak bir Ayrıntıları veri görüntülendiği her denetim düzeni. Verileri Orders tablo içinde olacak bir Kılavuz görüntülenme düzenini bir DataGridView denetim.

Veri kaynakları penceresinde açılan türü öğeler için ayarlamak için

  1. Genişletme müşterilerin düğümünde Veri kaynakları pencere.

  2. Denetimi değiştirme Müşteriler seçerek tek denetimleri tablo Ayrıntıları üzerindeki denetim listesinden Müşteriler düğüm. Daha fazla bilgi için bkz. Nasıl yapılır: veri kaynağı penceresinden sürükleyerek, oluşturulacak denetim kümesi.

Veriye bağlı Form oluşturma

Veriye bağlı denetimler öğeleri sürükleyerek oluşturabileceğiniz Veri kaynakları formunuza pencere.

Formdaki veriye bağlı denetimler oluşturmak için

  1. Ana sürükleyin müşterilerin düğümden Veri kaynakları üzerine pencere Form1.

    Araç şeridi ile birlikte formdaki veriye bağlı denetimler tanımlayıcı etiketlerle görünür (BindingNavigator) kayıtlar arasında gezinme için. A NorthwindDataSet, CustomersTableAdapter, BindingSource, ve BindingNavigator bileşen tepsisinde görünür.

  2. İlgili sürükleyin siparişleri düğümden Veri kaynakları üzerine pencere Form1.

    Not

    İlgili siparişleri düğümü altında bulunan Faks sütun ve düğümünün bir alt düğümü müşterilerin düğüm.

    A DataGridView denetim ve araç şeridi (BindingNavigator) formda görüntülenen kayıtlar arasında gezinme. Bir OrdersTableAdapter ve BindingSource bileşen tepsisinde görünür.

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

Veritabanı çağırarak güncelleştirmek Update yöntemleri müşterilerin ve siparişleri TableAdapters. Varsayılan olarak, bir olay işleyicisi BindingNavigator's kaydetmek güncelleştirmeleri veritabanına göndermek için formun kodunu düğmesi eklenir. Bu yordam, bilgi tutarlılığı hataları artırma olasılığını ortadan kaldırmak için doğru sırada güncelleştirmelerini göndermek için bu kodu değiştirir. Kod hata try-catch bloğu update çağrısında kaydırma tarafından işleme de uygular. Kodu uygulamanızın gereksinimlerine uyacak şekilde değiştirebilirsiniz.

Not

Netlik için Bu izlenecek yolda, bir hareket kullanmaz, ancak iki veya daha fazla ilişkili tabloları güncelleştiriyorsanız, işlem içindeki tüm güncelleştirme mantığı içermelidir.Bir hareket, herhangi bir değişiklik yapılıyor önce tüm ilgili değişiklikleri veritabanına başarılı olmasını sağlar bir işlemdir.Daha fazla bilgi için bkz. Performing Transactions.

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

  1. Çift kaydetmek düğmesini BindingNavigator Kod Düzenleyicisi'ni açmak için bindingNavigatorSaveItem_Click olay işleyicisi.

  2. Olay işleyicisi çağırmak için kod Değiştir Update ilgili TableAdapters yöntemleri. Aşağıdaki kod öncelikle her için güncelleştirilmiş bilgileri tutmak için üç geçici tablolar oluşturur DataRowState (Deleted, Added, ve Modified). Daha sonra güncelleştirmeleri doğru sırayla çalıştırılır. Kod aşağıdaki gibi görünmelidir:

    Me.Validate()
    Me.OrdersBindingSource.EndEdit()
    Me.CustomersBindingSource.EndEdit()
    
    Dim deletedOrders As NorthwindDataSet.OrdersDataTable = CType(
        NorthwindDataSet.Orders.GetChanges(Data.DataRowState.Deleted), NorthwindDataSet.OrdersDataTable)
    
    Dim newOrders As NorthwindDataSet.OrdersDataTable = CType(
        NorthwindDataSet.Orders.GetChanges(Data.DataRowState.Added), NorthwindDataSet.OrdersDataTable)
    
    Dim modifiedOrders As NorthwindDataSet.OrdersDataTable = CType(
        NorthwindDataSet.Orders.GetChanges(Data.DataRowState.Modified), NorthwindDataSet.OrdersDataTable)
    
    
    Try
        ' Remove all deleted orders from the Orders table.
        If Not deletedOrders Is Nothing Then
            OrdersTableAdapter.Update(deletedOrders)
        End If
    
        ' Update the Customers table.
        CustomersTableAdapter.Update(NorthwindDataSet.Customers)
    
        ' Add new orders to the Orders table.
        If Not newOrders Is Nothing Then
            OrdersTableAdapter.Update(newOrders)
        End If
    
        ' Update all modified Orders.
        If Not modifiedOrders Is Nothing Then
            OrdersTableAdapter.Update(modifiedOrders)
        End If
    
        NorthwindDataSet.AcceptChanges()
    
    Catch ex As Exception
        MsgBox("Update failed")
    
    Finally
        If Not deletedOrders Is Nothing Then
            deletedOrders.Dispose()
        End If
    
        If Not newOrders Is Nothing Then
            newOrders.Dispose()
        End If
    
        If Not modifiedOrders Is Nothing Then
            modifiedOrders.Dispose()
        End If
    End Try
    
    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

Uygulamayı test etmek için

  1. F5'e basın.

  2. Her tablodaki bir veya daha fazla kayıt verileri bazı değişiklikler yapın.

  3. Press kaydetmek düğme.

  4. Değişiklikleri kaydetmiş olduğunuzu doğrulamak için veritabanındaki değerleri denetleyin.

Sonraki Adımlar

Uygulama gereksinimlerinize bağlı olarak, Windows uygulamanızın veri ilişkili bir form oluşturduktan sonra gerçekleştirmek isteyebileceğiniz birkaç adım vardır. Bu yönergeyi yapabilir bazı geliştirmeler içerir:

Ayrıca bkz.

Kavramlar

Visual Studio 2012'deki Veri Uygulaması Geliştirme Yenilikleri

Windows Forms denetimleri Visual Studio veri bağlama

Uygulamanız veri almaya hazırlanıyor

Uygulama veri getiriliyor

Visual Studio veri denetimleri

Uygulamanızın veri düzenleme

Veri doğrulama

Verileri kaydetme

Diğer Kaynaklar

Veri Talimatları

Visual Studio veri uygulamaları genel bakış

Visual Studio verilere bağlanma