Aracılığıyla paylaş


İzlenecek Yol: Bir İşlemde Veri Kaydetme

Bu kılavuz hareket kullanarak verileri kaydetmek nasıl kullanılacağını göstermektedir System.Transactions ad alanı.Bu örnek kullanır Customers ve Orders Northwind örnek veritabanı tablolarından.

Önkoşullar

Bu kılavuz Northwind örnek veritabanına erişimi gerektirir.Northwind örnek veritabanı kurma hakkında daha fazla bilgi için bkz: Nasıl Yapılır: Örnek Veritabanları Yükleme.

Bir Windows uygulaması oluşturma

İlk adım Windows Uygulaması oluşturmaktır.

Yeni Windows projesi oluşturmak için

  1. Visual Studio, gelen Dosya menüsü, yeni bir Proje.

  2. SavingDataInATransactionWalkthrough proje adı.

  3. Windows Uygulaması'nı seçin ve Tamam'a tıklayın.Daha fazla bilgi için .NET Framework ile İstemci Uygulamaları Geliştirme.

    SavingDataInATransactionWalkthrough Proje oluşturulur ve eklenen Çözüm Gezgini.

Veritabanı veri kaynağı oluşturma

Bu adımı kullanan Veri Kaynağı Yapılandırma Sihirbazı dayanan bir veri kaynağı oluşturmak için Customers ve Orders Northwind örnek veritabanındaki tabloları.

Veri kaynağı oluşturmak için

  1. Veri menüsünden Veri Kaynaklarını Göster'i tıklatın.

  2. İçindeki veri kaynakları penceresinde select Yeni veri kaynağı Ekle başlatmak için veri kaynağı Yapılandırma Sihirbazı.

  3. Bir veri Kaynağı Türü Seç sayfasında, Veritabanı'nı seçin ve daha sonra İleri'yi tıklatın.

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

    • Aşağı açılır listede bir veri bağlantısı Northwind örnek veritabanına kullanılabilir değilse, seçin.

      -veya-

    • Seçin Yeni bağlantı başlatmak için Ekle/Değiştir bağlantı iletişim kutusunu ve Northwind veritabanına bağlantı oluşturun.

  5. Veritabanına parola gerekiyorsa, hassas verileri eklemek için bir seçenek belirleyğp İleri'yi tıklatın.

  6. Bağlantı Dizesini Uygulama Yapılandırma Dosyasına Kaydet sayfasında İleri'yi tıklatın.

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

  8. Seçin Customers ve Orders tabloları ve sonra Son.

    NorthwindDataSet projenize eklenir ve Customers ve Orders tabloları görünür veri kaynakları pencere.

Formu denetimleri ekleme

Öğeleri sürükleyerek veri ilişkili denetimleri oluşturabilirsiniz veri kaynakları formunuz penceresinden.

Veri oluşturmak için Windows Form denetimlerini bağlı.

System.Transactions derlemesine başvuru ekleme

İşlemler kullanmak System.Transactions ad alanı.El ile eklemeniz gerekir. varsayılan olarak, bir proje system.transactions derlemesine başvuru eklenmedi.

Bir başvuru System.Transactions DLL dosyasına eklemek için

  1. Öğesinden Proje menüsünde seçin Başvuru Ekle.

  2. Seçin System.Transactions (üzerinde .NET sekmesi) tıklatıp Tamam.

    Bir başvuru System.Transactions projeye eklenir.

BindingNavigator'ın saveItem düğmesi kodda değiştirme

Varsayılan olarak, formunuz bırakılan ilk tablo için kod eklenir click olay kaydetme düğmesine BindingNavigator.Ek tabloları güncelleştirmek için kod el ile eklemeniz gerekir.Bu örnek için biz kaydetme dışında kod Kaydet mevcut yeniden düzenle düğmenin olay işleyicisi'ı tıklatın ve olup satır eklenen veya silinen uygun olarak belirli güncelleştirme işlevselliği sağlamak için birkaç daha fazla yöntem oluşturun.

Otomatik olarak üretilen kod Kaydet değiştirmek için

  1. Çift Kaydet düğmesini CustomersBindingNavigator (disket simgesiyle düğmesi).

  2. Replace CustomersBindingNavigatorSaveItem_Click aşağıdaki kodla yöntemi:

    Private Sub CustomersBindingNavigatorSaveItem_Click() Handles CustomersBindingNavigatorSaveItem.Click
        UpdateData()
    End Sub 
    
    Private Sub UpdateData()
        Me.Validate()
        Me.CustomersBindingSource.EndEdit()
        Me.OrdersBindingSource.EndEdit()
    
        Using updateTransaction As New Transactions.TransactionScope
    
            DeleteOrders()
            DeleteCustomers()
            AddNewCustomers()
            AddNewOrders()
    
            updateTransaction.Complete()
            NorthwindDataSet.AcceptChanges()
        End Using 
    End Sub
    
    private void customersBindingNavigatorSaveItem_Click(object sender, EventArgs e)
    {
        UpdateData();
    }
    
    private void UpdateData()
    {
        this.Validate();
        this.customersBindingSource.EndEdit();
        this.ordersBindingSource.EndEdit();
    
        using (System.Transactions.TransactionScope updateTransaction = 
            new System.Transactions.TransactionScope())
        {
            DeleteOrders();
            DeleteCustomers();
            AddNewCustomers();
            AddNewOrders();
    
            updateTransaction.Complete();
            northwindDataSet.AcceptChanges();
        }
    }
    

Sıralama için ilgili verileri değişiklikleri karşılaştırma için aşağıdaki gibidir:

  • Alt kayıtları silme (Bu durumda, kayıtlarını silmek Orders Tablo)

  • Üst kaydı sil (Bu durumda, kayıtlarını silmek Customers Tablo)

  • Üst kayıt ekleme (Bu durumda, kayıtları Ekle Customers Tablo)

  • Alt kayıt ekleme (Bu durumda, kayıtları Ekle Orders Tablo)

Varolan siparişler silmek için

  • Aşağıdaki DeleteOrders yöntemine Form1:

    Private Sub DeleteOrders()
    
        Dim deletedOrders As NorthwindDataSet.OrdersDataTable
        deletedOrders = CType(NorthwindDataSet.Orders.GetChanges(Data.DataRowState.Deleted),
            NorthwindDataSet.OrdersDataTable)
    
        If Not IsNothing(deletedOrders) Then 
            Try
                OrdersTableAdapter.Update(deletedOrders)
    
            Catch ex As Exception
                MessageBox.Show("DeleteOrders Failed")
            End Try 
        End If 
    End Sub
    
    private void DeleteOrders()
    {
        NorthwindDataSet.OrdersDataTable deletedOrders;
        deletedOrders = (NorthwindDataSet.OrdersDataTable)
            northwindDataSet.Orders.GetChanges(DataRowState.Deleted);
    
        if (deletedOrders != null)
        {
            try
            {
                ordersTableAdapter.Update(deletedOrders);
            }
            catch (System.Exception ex)
            {
                MessageBox.Show("DeleteOrders Failed");
            }
        }
    }
    

Mevcut müşterileri silmek için

  • Aşağıdaki DeleteCustomers yöntemine Form1:

    Private Sub DeleteCustomers()
    
        Dim deletedCustomers As NorthwindDataSet.CustomersDataTable
        deletedCustomers = CType(NorthwindDataSet.Customers.GetChanges(Data.DataRowState.Deleted),
            NorthwindDataSet.CustomersDataTable)
    
        If Not IsNothing(deletedCustomers) Then 
            Try
                CustomersTableAdapter.Update(deletedCustomers)
    
            Catch ex As Exception
                MessageBox.Show("DeleteCustomers Failed" & vbCrLf & ex.Message)
            End Try 
        End If 
    End Sub
    
    private void DeleteCustomers()
    {
        NorthwindDataSet.CustomersDataTable deletedCustomers;
        deletedCustomers = (NorthwindDataSet.CustomersDataTable)
            northwindDataSet.Customers.GetChanges(DataRowState.Deleted);
    
        if (deletedCustomers != null)
        {
            try
            {
                customersTableAdapter.Update(deletedCustomers);
            }
            catch (System.Exception ex)
            {
                MessageBox.Show("DeleteCustomers Failed");
            }
        }
    }
    

Yeni müşteriler eklemek için

  • Aşağıdaki AddNewCustomers yöntemine Form1:

    Private Sub AddNewCustomers()
    
        Dim newCustomers As NorthwindDataSet.CustomersDataTable
        newCustomers = CType(NorthwindDataSet.Customers.GetChanges(Data.DataRowState.Added),
            NorthwindDataSet.CustomersDataTable)
    
        If Not IsNothing(newCustomers) Then 
            Try
                CustomersTableAdapter.Update(newCustomers)
    
            Catch ex As Exception
                MessageBox.Show("AddNewCustomers Failed" & vbCrLf & ex.Message)
            End Try 
        End If 
    End Sub
    
    private void AddNewCustomers()
    {
        NorthwindDataSet.CustomersDataTable newCustomers;
        newCustomers = (NorthwindDataSet.CustomersDataTable)
            northwindDataSet.Customers.GetChanges(DataRowState.Added);
    
        if (newCustomers != null)
        {
            try
            {
                customersTableAdapter.Update(newCustomers);
            }
            catch (System.Exception ex)
            {
                MessageBox.Show("AddNewCustomers Failed");
            }
        }
    }
    

Yeni siparişler eklemek için

  • Aşağıdaki AddNewOrders yöntemine Form1:

    Private Sub AddNewOrders()
    
        Dim newOrders As NorthwindDataSet.OrdersDataTable
        newOrders = CType(NorthwindDataSet.Orders.GetChanges(Data.DataRowState.Added),
            NorthwindDataSet.OrdersDataTable)
    
        If Not IsNothing(newOrders) Then 
            Try
                OrdersTableAdapter.Update(newOrders)
    
            Catch ex As Exception
                MessageBox.Show("AddNewOrders Failed" & vbCrLf & ex.Message)
            End Try 
        End If 
    End Sub
    
    private void AddNewOrders()
    {
        NorthwindDataSet.OrdersDataTable newOrders;
        newOrders = (NorthwindDataSet.OrdersDataTable)
            northwindDataSet.Orders.GetChanges(DataRowState.Added);
    
        if (newOrders != null)
        {
            try
            {
                ordersTableAdapter.Update(newOrders);
            }
            catch (System.Exception ex)
            {
                MessageBox.Show("AddNewOrders Failed");
            }
        }
    }
    

Uygulamayı Çalıştırma

Uygulamayı çalıştırmak için

  • Uygulamayı çalıştırmak için F5'e basın.

Ayrıca bkz.

Görevler

Nasıl yapılır: Bir İşlemi Kullanarak Veri Kaydetme

Kavramlar

Oracle Distributed Transactions

System.Transactions Integration with SQL Server

Uygulamanızı Veri Almaya Hazırlama

Uygulamanıza Veri Getirme

Visual Studio'da Verilere Denetimler Bağlama

Uygulamanızdaki Verileri Düzenleme

Verileri Doğrulama

Verileri Kaydetme

Diğer Kaynaklar

Transactions and Concurrency

Visual Studio'da Verilere Bağlanma